PHP関連のことを調べてみた2022年12月18日

PHP関連のことを調べてみた2022年12月18日
目次

プログラマーへの道(2) -社会人編-

# 社会人になる前

[プログラマーへの道 -青春時代編-](https://qiita.com/Atsulabo/private/e5e534f461d3f22e12c5) でお話ししてます。前編。
なんでこれ書いてるかもこっちに書いてますので是非読んでくださ〜い!

追加で。社会人になる前に、Avivaに通ってWordとExcel勉強して、なんかマイクロソフトの資格取りました。
Avivaの人は筆談で教えてくれてほんと親切でした。この場を借りてありがとうございます。

あ、そういえば。大学時代に、北斗の拳だったかな?タイビングゲームかってタイピング練習してたな。
そんなわけで、社会人になる前はパソコンに不安はなかったです。

# 社会人 ピカピカの新人

内定式の時色々研修受けて、手配してくださったホテルに入るなり、ベッドに腰かけてたと思ったら2時間ぐらい寝てしまうほど疲れた記憶。
あのホテルはまだあるのかなあ。

その数ヶ月後、社会人新人になりました。
ただし、周りは大学卒業したて、こっちは色々あって大学院を5年満期取得退学でやめたので5年の差がッ!!
ジェネレーションギャップと

元記事を表示

【Laravel】Backlogから課題を取得してcsvで出力する方法

## はじめに

さて、今年のアドベントカレンダーは何を書こうかと、、、。
ちょうどLaravelでBacklogとNotionを連携する処理を書いていたので、それ関連で書こうと考えた。
本当はNotionに連携するところまで書こうと思っていたのだが、
まだ実装途中で時間がかかりそうなので、
**Backlogから値を取得してcsvで出力するまで**の記事を書くことにした。
プロジェクトの情報が漏洩しないように、外部の情報は、サニタイズして記述するので、
動かなかったらごめん?‍♀️

## 対象読者
– Web系エンジニアの人
– プログラミングやってる人
– Laravelやってる人
– Backlog使ってる人

## backlogとは?
チームのタスク管理ツールのこと。
URL:https://backlog.com/ja/

## 大まかな手順
1. Laravel環境構築
2. League\Csvのインストール
2. BacklogAPIキーの取得
2. 実装

## Laravel環境構築

### 使用技術
※ MySqlは現在は使われていないが、今後使用するかもし

元記事を表示

実行環境を切り替える、”Runtime”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の18日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、S

元記事を表示

【Laravel6】ユーザー招待機能の概要と基本設計

# はじめに

ユーザー招待機能の概要と基本設計について投稿します。

Web業界実務未経験での転職活動用にポートフォリオとしてはじめて作成したWebアプリ開発のオリジナルの機能として「家族ユーザー招待」機能を実装したときのものです。(タイトルは分類として「ユーザー招待」と表記しています)

※ 作成したポートフォリオは、絵本を読み聞かせしたことの記録・管理を、家族と共有できるWebアプリケーションです(作成期間は、2021年2月末〜7月)

https://qiita.com/ryamate/items/c3b4f63f8d94ab090bf8

## 記事を書く目的

– 類似の機能を作る方への参考にしていただきたいため
– 自身の学習の振り返りのため

## 投稿内容(全 5 回)

本連載は以下の順序で投稿します。

– ユーザー招待機能の概要と基本設計
– ユーザー招待機能の詳細設計と実装
– (1) 招待メール送信フォーム
– (2) DBのテーブル
– (3) 招待メール送信処理
– (4) 招待メールのテンプレート
– (5) ユ

元記事を表示

Laravelのメールのテストでの詰まった話

# はじめに
laravelのメールのテストで、宛先を指定するメールのテストが通らない問題で詰まったので、その話をします。

GETで/mail/sendにアクセスしたら、メールを送信する仕様になっています。
TestMailというMailableクラスを作成して、その中で宛先や件名の設定をしています。

“`php
class TestMail extends Mailable
{
use Queueable, SerializesModels;

/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name, $email)
{
$this->name = $name;
$this->email = $email;
}

/**
* Build the message.
*
* @return $this

元記事を表示

LaravelアプリケーションにSAML認証方式のシングルサインオンログインを実装する(ライブラリ編)

これは[株式会社マイホム アドベントカレンダー2022](https://qiita.com/advent-calendar/2022/myhm)の17日目の記事です。
記事の内容は会社の業務とは一切関係ありません。

## 概要

LaravelアプリケーションにSAML認証方式によるシングルサインオンでログインする実装例です。

## 前提

– Laravel及びスターターキットのLaravel Breezeをインストール済みで、ログイン可能なユーザーも登録済みであること。`https://localhost/`にブラウザアクセス可能な状態になっていること。
– Laravel Breezeのセットアップ等については公式、有志邦訳ドキュメントをはじめとして参考例が多数ありますので省略します。
– Identity Provider(IdP)にはMicrosoft Azure ActiveDirectory(AzureAD)を使用します。

## 手順

OneLogin toolkitをベースに作られた[24Slides/laravel-saml2](https://github

元記事を表示

IDEとテストコードを中心としたブラウザ不要なウェブアプリケーション開発スタイル

これは[弁護士ドットコム Advent Calendar 2022](https://qiita.com/advent-calendar/2022/bengo4com) の 18 日目の記事です。

# はじめに

筆者は普段の業務では主に PHP でウェブアプリケーションの開発をしていますが、近年は ALPS-ASD を中心に Composer パッケージなどのウェブアプリケーション以外の開発にも取り組む機会が増えました。

パッケージ開発とウェブアプリケーション開発で大きく異なる点として、ブラウザが必要という点が挙げられます。
フレームワークとユーザコードの境界になるコントローラやハンドラに実装されたコードを実行するには、テストがない場合は HTTP リクエストが必要です。
この場合、ブラウザと IDE の操作を切り替える必要があり、非常に効率が悪いです。

本記事では、筆者が実践しているPhpStormとテストコードを中心としたブラウザ不要なウェブアプリケーション開発スタイルについて紹介します。

# 前提

以下のツールを前提とします。

* PhpStorm
* PHPUni

元記事を表示

array_slice() で配列の一部を取得する(PHP)

## 概要
配列の一部が取得できます。
戻り値は取得した配列になります。

## 文法
“`php
array_slice(array, offset, length, preserve_keys)
“`
[必須] array:入力配列
[必須] offset:開始位置の指定
[任意] length:開始位置からいくつ値を取得するか
[任意] preserve_keys:キーを保存するか

## 使い方

“`php
c [1] => d [2] => e )

$slicedList = array_slice($input, 2, 2);
print_r($slicedList); // Array ( [0] => c [1] => d )

// 連想配列でも利用可能。
$input2 = [
“input” =>

元記事を表示

Laravelでルーティングパラメータの取得と自動ルーティング

今回は
`https://example.com/xxx/xxx.hoge`という入力に対して`xxx.hoge`が表示できるような自動ルーティングに関して書きたいと思います.

Laravelではまずurlにアクセスがあったらweb.phpという部分でルーティングを行っており,「こういうURLが来たらこれを返す」という処理が発生します.

こんな感じで書きます

“`php
Route::get(‘/’, function(){
return view(“index”)
});
“`

え?じゃあいつもみたいにフォルダにindexやら1.html,2.htmlと入れた場合は毎回ルーティングしなきゃいけないの????

答えはいいえ,publicフォルダはルーティングが関係ないっぽいのでpublicフォルダに置けばurlから直接アクセスできます.

ただweb.phpを使って何かしらの値を返したりして表示を行う場合はそれができません.かならずweb.phpを通ってしまうからです.

## じゃあどうするか

方法は沢山ありますが,{}を使うのがおすすめです
Laravelでは{

元記事を表示

G’s EXPANSION Laravel講座を受講してみた

# はじめに
”セカイを変えるGEEK”を育てるG’s ACADEMYが提供する拡張プログラム【G’s EXPANSION Laravel講座】を受講しました。
拡張プログラムはG’s ACADEMYの生徒でなくても受講できます。
今回の講座ではPHPのフレームワークである「Laravel」を学んだので、その内容についてまとめます。

https://gs-exp-laravel-2022.peatix.com/view

# 講座の概要
講座は2ステップで進みます。
1. オンデマンド動画(自己学習)
2. ライブ授業(講師のガイドに従って一緒にコードを書く)

### ①オンデマンド動画での自己学習
講座に申し込むと動画教材と資料が配信されます。動画は2本でそれぞれ50分ほど。資料には実際に使うコードなどが書いてあります。
オンデマンド動画では「本の管理アプリ」の作成を通じて以下のことを学びました。
1. Laravelの環境構築 
2. CRUD処理(登録・表示・更新・削除)

特にオンデマンド動画で学んだ環境構築はライブ授業でもそのまま使いますので、何度もやっておくことをお勧め

元記事を表示

「Twitter for 〇〇」が消えたので発信元を見るだけのツールを作った

イーロンの改革の影響なのか、Twitterのツイートページにこれまで存在した「Twitter for Android」や「Twitter for iOS」「Twitter Web App」といったツイートの発信元が表示されなくなりました。

![for.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/6672a419-0b53-bd74-ef83-110c85a819a0.png)

しかし、**Twitter APIを叩いてみると普通に取得できる**んですよね。なのでそれを誰でも見られるようにするミニツールを作りました。

https://tools.ic731.net/twitter/for/

とはいえ、見られる環境と見られない環境があるようで、ブラウザでは消えているのですが、私のAndroid版Twitterではまだ表示されてるんすよね。そこらへんは色々兼ね合いがあるのでしょう。

### APIについて
今回はTwitter API v2をPHPを利用して叩いています。URLからツ

元記事を表示

プログラミング初学者がPHPを勉強する(配列編)

# 自己紹介
・現在26歳です。
・製造業(全くパソコン触ったことない)からエンジニア転職を目指して学習しています。
・プログラミング初心者です。
・学習したことをメモ程度に書いていこうと思います!

# 何について?
今回はPHPの配列について記載していく!

## ・配列とは

1、複数の値をまとめたタンスのようなものです。引き出しに値を入れていくイメージ
2、データを「キーと値」のペアにしている。
3、「キー/値」のペアになっているデータを配列の要素と言う。
4、配列には全てのデータ型の値を格納することが出来る。

## ・配列の種類

**結論‥PHPには1種類しかない!**

キーに連続するint型を使うとインデックス配列になり、
キーにstring型を使うと連想配列になり、
値に配列を格納すると多次元配列になる。
なので考え方を変えて使用する必要はないと思う。

## ・配列の作成
配列の作成には2種類のやり方があります。
**1、arrayを使用する。**
`$fruits = array(‘peach’, ‘banana’);`
**2、arrayを使用しない。**
`

元記事を表示

【Laravel】Model内で変数をグローバル宣言したい

Model内にクエリビルダを使ってSQLを記述しています。
クロージャ(functionの中のfunction)でグローバル変数を使用したいのですが、`null` が返ってきてしまい、数時間ハマったため備忘録として残します。
## 目次
– 結論
– useとは
## 結論
下記の通り実装することで動作確認できました。
“`php
public function check_notify_user($auth_user_id) {
$query = DB::table(‘notifications as n’)
->leftJoin(‘notification_user as nu’, function ($join) use($auth_user_id){
$join->on(‘n.id’, “=”, ‘nu.notification_id’)
->where(‘nu.user_id’, “=”, $auth_user_id);
})
->where(‘nu.user_id’, null)

元記事を表示

Laravelの外部キー制約についてまとめた

「外部キー制約したい」と思った時に、毎度ネットサーフィンするのが面倒なので、参照用として記録しておきます。

Version → `8.83.26`
PHP → `8.1.12`
## 外部キー制約の追加
### 手順

①親テーブル(`parents`)のマイグレーションファイル作成→`migrate`実行(特別な作業がないので省略)
②子テーブル(`childs`)のマイグレーションファイル作成

“`bash
$ php artisan make:migration create_childs_table
“`

③外部キー制約の追加(ここが肝)

“`php
Schema::create(‘childs’, function (Blueprint $table) {
$table->id();
// ↓ ここに追記
$table->foreignId(‘parent_id’)->constrained(‘parents’)->cascadeOnUpdate()->cascadeOnDelete();
});
“`
### ポイント

`foreignId

元記事を表示

ヒアドキュメントサンプルプログラム(PHP)

PHPでヒアドキュメントのサンプルプログラムをじっそうしました。

“`html





Heredocument1



$name の必殺技は「ズッキュン」です
$name は乃木坂46最年長メンバーです
EOL;

元記事を表示

PHPを使ってOpenSearchServiceで日本語全文検索する(Official PHP Client for OpenSearchを用いて)

この記事は朝日新聞社 [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/asahi)の17日目の記事です?
朝日新聞のエンジニアがバラエティに富んだテック記事をお届けしております!
***

PHPとOpenSearchの公式PHPクライアントであるOfficial PHP Client for OpenSearchを使って、AWSが提供しているフルマネージドのAmazon OpenSearch Serviceにアクセスし、データを取得するための方法を**初心者でも分かるように**解説します。

# 環境
・Amazon OpenSearch Service
・EC2 (Amazon Linux 2)
・PHP 8.0 (インストール済み)
・Apache/2.4.54 (インストール済み)
・Official PHP Client for OpenSearch https://github.com/opensearch-project/opensearch-php

PHPとOfficial PHP Clien

元記事を表示

HTTP通信クライアント、”HttpClient”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の17日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、S

元記事を表示

【Laravel】Undefined class ‘Log’【PhpStorm】

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/a3293944-7aa7-8c4b-f113-7177dd446d3e.png)
Warningが出る場合、Laravel IDE Helperをインストールしよう

“`bash
composer require –dev barryvdh/laravel-ide-helper
“`

“`php:config/app.php
‘providers’ => [
/*
* Package Service Providers…
*/
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
“`

“`php:app/Providers/AppServiceProvider.php
public function register()
{
if (

元記事を表示

[Laravel]ランクでソートをする方法+子テーブルでソートする方法

# はじめに
子テーブルにあるS,A,Bのようなランクでソートをかける時に苦戦をしたので、その方法を解説します。

以下のテーブルがある前提で、このテーブルのソートについて解説していきます。
usersとuser_detailsは1対1の関係です
| users |
| —- |
| id |
| name |

| user_details |
| —- |
| id |
| user_id |
| rank |

# ランクでソートする方法
ランクでソートをするにはLaravelのorderbyRawを使用します。
ランクはS,A,Bという値があり、昇順でソートする場合は以下のようになります。
“`php
UserDetail::orderByRaw(“CASE rank
WHEN ‘S’ THEN 1 WHEN ‘A’ THEN 2 WHEN ‘B’ THEN 3 END ASC”);
“)->get()
“`

# 子テーブル+ランクでソートする方法
以下のようにselectで子テーブルの項目を抽出してから、その値でソートをかければできます。(selectを使用

元記事を表示

コードから読み解くautoloadの仕組み ~より深くautoloadの仕組みを理解しよう~

これは[Qiita Advent Calendar 2022 Laravel 17日目](https://qiita.com/advent-calendar/2022/present-calendar)の記事です。

# この記事で扱うこと
この記事は、Laravelで使用されているComposerのautoloadの仕組みについて実際のコードを見ていく中で理解することを目的とした記事です。なので、この記事においてautoloadをどう使用するかについては一切触れていません。

# autloadの仕組みについて

:::note warn
コードを簡略化して解説しやすくするために、この記事で紹介するコードの中で比較的重要ではない(と自分が感じる)部分は省略しています。
:::

## バージョン
| ツール | バージョン |
|:-:|:-:|
| PHP | 8.1.12 |
| Laravel | 8.77.1 |
|Composer|2.4.4|

## 概観
autoloadの仕組みを見る前に全体的にどんな処理になっているかを載せておきます。
それぞれのクラスの処理

元記事を表示

OTHERカテゴリの最新記事