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

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

Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた

# 元ネタ

@localdisk さんの記事です。

https://zenn.dev/localdisk/articles/a338175e913410

こちらで概ね適切に説明されているものの,文章のみで図が無くて直感的に把握しづらいので,初心者にもすぐ飲み込ませられるように図に描き起こしてみました。

# 図

![download-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25060/6dd5d531-32e5-c8c4-c60f-b29cee04b8b8.png)

# 解説

## `illuminate/auth`: 最小限の認証認可コアロジック

https://github.com/illuminate/auth

コアコンポーネント群の `laravel/framework` に含まれているものです。 **Socialite 以外のすべてのパッケージが,実質このコアに依存していることになります。**

以下の記事でこのパッケージ

元記事を表示

PHPの型について

## 概要

– 各型の特徴、型の相互変換についてまとめています。
– この記事のコードはPHP8.0で実行しています。
– どのOSでもPHPをインストールすれば実行できる内容になっています。

## 基本の型

4つのスカラー型(一つの値を格納する)

| 名前 | 表記 | 概要 |
| ———— | ————- | —————————– |
| 論理値型 | bool | 真、偽(true、false)を格納する |
| 整数型 | int | 整数を格納する |
| 浮動小数点型 | float(double) | 小数を格納する |
| 文字列型 | string | 文字列を格納する |

4つの複合型(スカラー型、複合型の値を一つ以上格納する)

| 名前

元記事を表示

imagick php laravel 画像に文字を合成

画像に文字を合成する。
たったそれだけ。

・フォント azuki.ttf はググって拾ってくる

“`

$bg = new \Imagick(public_path(‘/img/lasthako.png’));//背景画像
$str = ‘恋に恋焦がれ恋に泣く’;

$text = new \ImagickDraw();
$text->setFont(resource_path(“/any/font/azuki.ttf”));//フォント
$text->setFontSize(32);
$text->setStrokeColor(‘#000’); // black

//テキスト描画設定を含む ImagickDraw オブジェクト。x,y,角度,描画するテキスト
$bg->annotateImage($text, 10, 200, 0, $str);

$bg->writeImage(public_path(‘new_sample2.png’));

“`

元記事を表示

【Laravel8】親子テーブルを同時に新規作成・更新・削除する方法

## 初めに

筆者はプログラミング歴2か月の初心者です。
これからご紹介する方法について改善点があるかと思いますのでご指摘いただけましたら幸いです。

参考にしたページ
https://zenn.dev/yuri0427/articles/fd64797f447d09
ビューの入力フォームで使用したJavaScript(jQuery)の参考ページ
https://4ndan.com/blog/form/

## 開発環境
Windows 10
Laravel Framework 8.83.15

## 実装例
ECサイトの商品ページ内のオプション部分の管理画面を作る想定
・Tシャツの色(レッド・ブルー・グリーン)の3通りの選択肢
・Tシャツのサイズ(Sサイズ・Mサイズ・Lサイズ・LLサイズ)の4通りの選択肢

例えば、”色”と”色の選択肢”を2テーブル同時に作成したり、編集したり、削除する機能を作る。

## テーブル
下記イラストのような関係を持つ2つのテーブルを用意します。
optionsが親でchild_optionsが子の関係となります。
![1111.jpg](https

元記事を表示

PHPのforeachで参照渡しを使った後は、unset()しておこう!

|[../](https://qiita.com/taconana/items/3f5424f9abfc755772c2) |
|—|

@tadsanさんの投稿「[PHPのリファレンス(参照&)の傾向と対策、あるいはさよなら](https://qiita.com/tadsan/items/74f992dcc48216b571bd)」の中に「foreachでの参照渡しは、unset()しないと危険である」との内容があったので、私も動作確認してみた。サンプルコードをより簡潔にして、やっと理解できた。
※PHP経験の長い方には、常識なのかもしれませんが、初心者には新鮮!

たとえば、
“`php
$speach = [“おはよう”, “ありがと”, “さよなら”];
foreach ($speach as &$s) {
echo $s, PHP_EOL;
}
foreach ($speach as $s) {
echo $s, PHP_EOL;
}
var_dump($speach);
“`
では、2つ目のforeachの実行時に、`$speach`の配列が[“おはよう”

元記事を表示

Eloquent のリレーションの使い方

## 大前提

テーブル名やカラム名の命名規則は遵守すること。

* プライマリは `id`
* `他テーブル名_id` は必ず外部キー。

論理名として「なんとかID」があったとしても、`nantoka_key` や `nantoka_code` にし、存在しないテーブルの `naktoka_id` は絶対に作ってはならない。

なお、ここで「外部キー」は必ずしも外部キー制約(FORREIGN KEY)を振るものではない。Eloquet のリレーションを結びつける論理キーを指している。
詳しくは、[Eloquent 前提の MySQL データベース設計](https://qiita.com/mikomey/items/50cceaf1f5e22d8b2b72) を参照のこと。

## リレーション定義の指針

– モデル定義と同時にすべての定義を書く必要はなく、コーディングの都度追加で十分。
– すなわち、hasMany に対応する belongsTo を必ずしもペアで定義する必要性はない。
– 慣れれば定義すべきリレーションは想像つくので、真っ先に定義することを否定はしない。

元記事を表示

Laravel プロジェクトの作成からシーダーまで

## Example プロジェクトの作成

Eloquent リレーションの動きを tinker で試すための Example プロジェクトの作成をまとめてみた。
このプロジェクトは次の記事で練習台として使う。

– [Laravel のコレクションとは](https://qiita.com/mikomey/items/f464dafe883b60a09247)
– [Eloquent のリレーションの使い方](https://qiita.com/mikomey/items/705834f47dcf4d3cbd1e)
– TBD

まずは、Laravel の新規プロジェクトの作成から。

*/var/www/sutdy/project をアプリケーションルートする場合:*

“`bash
$ mkdir -p /var/www/study
$ cd /var/www/study
$ composer create-project laravel/laravel:^8.0 example
$ cd example
$ chmod -R a+w storage
$ chmod -R a+

元記事を表示

【PHP基礎⑰】配列-1.foreach文

[問題]
要素数10の整数型の配列を宣言し、i番目の要素の初期値をiとし、順に値を表示するプログラムを作成しなさい。
配列の初期化は初期化子を使ってもよいし、繰り返しで初期値を代入してもよい。

# コード
“`php
$a = [0,1,2,3,4,5,6,7,8,9];
foreach($a as $m){
echo “$m \n”;
}
“`

# 結果
“`
0
1
2
3
4
5
6
7
8
9
“`

☆配列
・変数には1つしか情報を格納できなかったが、配列には複数の文字列や数値を格納することができる。
 格納した値を要素という。
・配列は、0番目、1番目…というように、0から始まる。
・[ ]で括る。
・その要素が配列の何番目かということを「キー」といい、配列$mの4番目なら、「 $m[4] 」と表記する。

☆foreach文

   foreach(配列変数 as 取り出した要素の値を格納する変数){
      実行する処理;
   }
 
・配列に含まれる各要素の値を順に取り出したい時に場合に便利。
・foreach文で

元記事を表示

【PHP】ビルトインサーバーの使い方

自分用のメモです。

# ビルトインサーバーとは

– PHPでのプログラム開発サポート用に組み込まれているサーバー環境のこと。

– ローカル環境はXAMPPやMAMPなどの環境を用意してPHPを動かしている方も多いと思いますが、PHPの場合、ビルドインサーバーを使うとコマンド1つで手軽にローカルサーバーの立ち上げができるので便利です。
– ただし、ビルトインサーバーはあくまで簡易的な環境のため、データベースなどと連携したい場合は、自前で用意する必要があります。

# ビルトインサーバー立ち上げ〜ブラウザでの表示方法

#### 作業フォルダへ移動

“`
$ cd sample_dr
“`

#### 立ち上げる

“`
$ php -S localhost:8000
“`

#### (例)sample.phpファイルを表示させたい場合

“`
http://localhost:8000/sample.php にアクセス
“`

元記事を表示

LaravelでAPI仕様書(OAS)と実装の乖離を簡単に防ぐならSpectatorがおすすめ!

皆さんはAPI仕様書(OAS)と実装の乖離を防ぐためにどのような対応をされていますでしょうか?

– コードからOASを自動生成することで乖離を防ぐ
– OASからコードを自動生成することで乖離を防ぐ
– PRレビュー時に目視で乖離を防ぐ
– 自作の検証ツールで乖離を防ぐ

などなどいくつかのアプローチが考えられるのかなと思います。

良い感じに自動生成ができれば乖離の心配はないかもしれませんが、少なからず手動作業が入る場合は何らか乖離を防ぐ検証が必要になると思います。

今回は、Laravelでそんなシーンに出くわした際にぜひ検討いただきたい [Spectator](https://github.com/hotmeteor/spectator) というツールを紹介させていただきます。

# 前提

php: 8.1.6
laravel/framework: 9.17.0
hotmeteor/spectator: 1.5.0
サンプルコード: https://github.com/TsukasaGR/laravel-spectator-sample

# Spectator is 何?

元記事を表示

フォルダを指定してマイグレーションファイルを作成したい

マイグレーションファイルを作成する際にフォルダを指定して行う必要があり、その方法を調査したため、備忘録としてメモしておきます。

# 必要になった理由

ファイル構成は次のとおり。
“`
– bootstrap/
– config/
– core/
– database/
– migrations/
– develops/
– modules/
– Test

– database/
– Migrations/ ← ここのフォルダを指定したい!

– public/
– resources/
– routes/
– strage/
– tests/
– vue/
“`

今回のプロジェクトは上記のようなファイル構成となっており、プロジェクトのトップで通常のマイグレーションファイルを作成するコマンドを入力しても、
希望の`/module/Test/database/Migrations`配下にマイグレーションファイルを作成できません。

それなら、`/module/Test`まで移動して、通常のマイグレーションファイルを作成するコマンドを入力すれ

元記事を表示

Laravel UI登録画面で画像保存処理を実装


# 概要
Laravel UI導入後に登録画面に画像保存処理を実装したので記録します。
![スクリーンショット 2022-06-23 23.59.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724488/5592c7d7-e3f2-6e0a-dd89-97ea319a6f85.png)


1. [バージョン](#Chapter1)
1. [View](#Chapter2)
1. [Controller](#Chapter3)



# バージョン
Laravel Framework 9.6.0
PHP 8.1.0
Laravel UI 8.5.19
bootstrap導入済み
シンボリックリンク作成済み


# View
formタグにenctype=”multipart/form-data”

元記事を表示

Macにiterm2を入れてみた!

Macでデフォルト以外のターミナルが使いたくてiterm2をインストールをしてみました。

コマンドとかが全くわからなかったのでとりあえず調査。
最初に見た記事のコマンドを叩くと、以下のエラーメッセージが。。

$brew cask install iterm2
Error: Unknown command: cask

いくつか調べたところ、cskコマンドの使い方が変わったらしいことが判明。
コマンドではなく、オプションに変わったらしい。
cskコマンドすら知らなかったのに、
なんでオプションになってるんや。。と悲鳴を上げつつ以下のコマンドを実行。

$ brew install iterm2 --cask

なんやかんや、ぶわーっとメッセージが出力され、インストール成功!!

iterm2 was successfully installed!

以下の記述の「iterm2」の部分を
インストールしたいアプリ名に変更すれば応用可能だと思われる。

$ brew install iterm2 --cask
元記事を表示

【PHP基礎⑯】ループ処理の終了-do…while文

[問題]
整数値を入力させ、入力値が0でなければ値を表示かつ再度入力してループ処理を続け、0であれば終了するプログラムを作成しなさい。

# コード
```php
do{
$a = intval(fgets(STDIN));
echo $a, PHP_EOL;
}while($a <> 0);
```

↓↓↓

5
-6
0
1  と入力

↓↓↓

# 結果
```
5
-6
0
```

☆do…while文
指定した条件がどうであれ、初回は必ず実行するという繰り返し処理。
2回目以降は、条件を満たす限りずっと処理を繰り返す。

$a = ○ ← 初期値。あれば入れる。
do{
 条件を満たす場合に行う処理;
 増減式;  ← あれば入れる。
}while(条件)

元記事を表示

機種依存文字を置換 PHP

```

元記事を表示

PHP7.4で、$_SESSIONとACPuはどのようにキャッシュされるのか

|[../](https://qiita.com/taconana/items/3f5424f9abfc755772c2) |
|---|

PHP7.4での値渡しと参照渡しについて、もう少し調べてみた。`$_SESSION`や`ACPu`で保持した場合、値はコピーされるのか、参照として取得できるのか。

前回、「[PHPのforeachでは、多くの場合、参照渡しの方がいい?](https://qiita.com/taconana/items/e1a568de0b39b60c4dce)」でforeachにおいて、配列要素がユーザー定義のクラスをインスタンス化したオブジェクトの場合、値渡しにしても参照渡しになることを確認した。もちろん、配列要素が整数などプリミティブな型、文字列、配列の場合、値渡しにするとコピーされることも確認した。

## foreachでの値渡しと参照渡しの確認

再度、復習を兼ねて確認しておく。ユーザー定義のクラスをインスタンス化したオブジェクトとして、Userクラスを使う。`$name`という属性を持たせている。以下の4つが確認できる。

- 配列要素がUser

元記事を表示

【PHP基礎⑮】ループ処理-5. 2ずつカウントアップ

[問題]
整数値を入力させ、0から入力値を超えない値まで2ずつ増やして表示するプログラムを作成しなさい。

# コード
```php
$a = intval(fgets(STDIN));
for($m = 0; $m < $a; $m = $m+2){ echo "$m \n"; } ``` ↓「10」と入力 # 結果 ``` 0 2 4 6 8 ``` ↓では、入力値から0を下回らない値まで2ずつ減らす場合は? ```php $a = intval(fgets(STDIN)); for($m = $a; $m > 0; $m = $m-2){
echo "$m \n";
}
```

結果
```
10
8
6
4
2
```

☆2ずつ減らす場合の増減式は、
 $m = $m-2 または$m-=2

元記事を表示

IoTのプロダクトを作りたくてG's ACADEMYに入った変わり者の制作記録

# 始めに、
はじめまして、 G's ACADEMY(ジーズアカデミー)TOKYO LAB12期のI_Tetsuと申します。
この記事では私がジーズアカデミー LABコース6ヶ月間で制作したプロダクトの中から、
JS選手権、PHP選手権、卒業制作で制作したプロダクトを紹介したいと思います。
(JS選手権、PHP選手権とはそれぞれ一通りの講義の後に行われる選手権で、そこまでに学んだことを活かして制作したプロダクトを発表し、発表の際に投票で順位まで決める発表の機会です。)
※ジーズアカデミーでの講義内容や経験談等は他の方がQiitaやnoteで書かれているのでそちらを参考にしてください。

ykiyoshimaさんのnote:[ジーズアカデミー現役生が前半戦(BOOTCAMPフェーズ)を終えて感じたこと](https://note.com/ykiyoshima/n/n03c5d256d449)

前提として、ジーズアカデミーでは**IoT**に関する講義は**ありません。**

元記事を表示

【Zoom API】クラウド録画をPHPで一括ダウンロードする

この記事は、[「Qiita Engineer Festa 2022」](https://qiita.com/official-campaigns/engineer-festa/2022)に参加するために執筆した記事です。

[**Zoom API/SDKを使ってみよう! - Qiita**](https://qiita.com/official-events/86d8555146e1b14fef24)
'**Zoom APIを実装してみた**'のテーマで執筆します!

# 環境
- PHP8.0
- Composer 2.3.5

# こんな人に読んでほしい
- Zoomにクラウド録画が溜まってきた
- 期間を指定して、ローカルに一括でダウンロードしたい
- ダウンロード時にフォルダ作成、ファイル名もわかりやすく付けたい

# ごあいさつ
はじめまして。KeiOTNです。福岡の小さな会社でコード書いたり事務作業したり何でも屋さんしています。プログラミング歴は約1年。実は、Qiita記事を投稿するのは初めてです。
「アウトプットしなければ、、」と思いつつきちんと記事にまとめることをしてこ

元記事を表示

オリジナルアプリのデータベース登録で、createを使った。

オリジナルアプリのデータベース登録で、悩みに悩み試しにcreateを使ってみることにしました。

# モデルにfillable属性を追加
```Playerdata.php

元記事を表示

OTHERカテゴリの最新記事