PHP関連のことを調べてみた2023年07月21日

PHP関連のことを調べてみた2023年07月21日

Swagger-PHP @OA\Items() is required when @OA\Schema() has type “array”の解決法

# はじめに
Laravel + Swagger/OpenAPI でAPIを開発する際に書くアノテーション(`@OA\`から始まるコメントみたいなの)に問題があり、Swaggerのドキュメントを出力する際にエラーが発生した。。。

“`console
$ php artisan l5-swagger:generate

Regenerating docs default

ErrorException

@OA\Items() is required when @OA\Schema() has type “array” in \App\Http\Controllers\Mobile\Version1\SearchController->getJobs() in /var/www/html/app/Http/Controllers/Mobile/Version1/SearchController.php on line 247

at vendor/zircote/swagger-php/src/Loggers/DefaultLogger.php:31
27▕

元記事を表示

株式会社ゆめみコーポレートエンジニアリングチームの新卒研修を全部公開します

# はじめに
株式会社ゆめみ(以下, ゆめみ)には,「コーポレートエンジニアリングチーム(以下, CE)」というチームがあります.
内製化支援がメインの事業であるゆめみの中で,CE は少し異質なチームで,組織の問題解決をすることに特化したチームです.普段は社内で使う Web サービスを開発しています.

詳しくは僕の過去のスライドや QiitaZine, CodeZine をご覧ください.

https://codezine.jp/article/detail/15419

「組織改善にダイレクトに関われるから面白い」ゆめみが語るコーポレートエンジニアの魅力〜Qiita Conference 2022イベントレポート

# ゆめみのコーポレートエンジニアに求められる力
以下は,コーポレートエンジニアを志望してくださる方のカジュアル面談や面接を担当していただく社内の担当者向けに私が用意した資料の抜粋です.

## 求める人物像
### 自分から率先してコミュニケーションが取れるひと
CE が開発・運用しているア

元記事を表示

Laravel Herdを試してみた【PHP/Laravel環境爆速構築ツール】

# Laravel Herdとは

Herdは、macOS向けの高速で便利なネイティブなLaravelとPHPの開発環境です。Laravelの開発を始めるには、PHP、nginx、そしてdnsmasqなど、必要なすべての要素が含まれています。

さらに、HerdはLaravel Valetの基盤になっているため、Laravel Valetの素晴らしい機能をすべて活用できます。

Valetとは異なり、HerdではHomebrewのインストールが必要ありません。なぜなら、Herdにはあらかじめコンパイルされたバイナリが含まれているからです。そのため、Herdをインストールして実際にPHPを使い始めるまでが非常に高速です。

https://herd.laravel.com/

つまり、これさえダウンロードすればLaravelをすぐに使い始めることができるってわけらしいです。
今回は、Laravel Herdを使ってLaravelのトップページを表示するところまで試してみます。

# 必須条件

– MacOS 12.0([Monterey](https://www.apple.com/b

元記事を表示

本当に手動でトランザクションを管理する必要がありますか?

# はじめに
Laravel には,データベーストランザクションの管理方法が大きく分けて 2 種類あります.
* `DB::transaction()` を使う方法
* `DB::beginTransaction()`, `DB::commit()`, `DB::rollBack()` を自分で組み合わせる方法

僕は圧倒的に `DB::transaction()` 派なんですが,レビューで指摘すると「なぜそこまで強く推すのか」と聞かれることがあるのでここに僕の考えをまとめておこうと思います.

今後聞かれたら「この記事読んで!」ができるぞ〜〜(怠惰)

# 簡単なサンプル
以下に, `DB::transaction()` を使ったパターンと(以下トランザクションの自動管理,自動管理) `DB::beginTransaction()`, `DB::commit()`, `DB::rollBack()` を使ったパターン(以下トランザクションの手動管理,手動管理)を簡単に書いてみます.

### 自動管理

“`php
use Illuminate\Support\Facades\DB

元記事を表示

filter_input関数(メソッド)の分かりやすい?記事

# 概要
filter_inputってどうやって渡ってくるんだっけ?
忘れちゃうなーって思ったので記事にしました。
# バージョン
– php 8.1

# html

“` html



チェックデジットを比較してみた

# チェックデジットを比較してみた

チェックデジットは、バーコード・ISBN・クレジット番号と様々なものに使われている。少し前マイナンバーカードのチェックデジットは性能が悪い、という話もあったらしい。
チェックデジットにはどのような方式が有るのかを調べ、それぞれの性能差を比較してみた。

## 比較対象のチェックデジット方式

* 単純な足し算
* Luhnアルゴリズム
* ISBN-10
* ISBN-13
* マイナンバー
* Verhoeffアルゴリズム
* DAMMアルゴリズム

## 各方式のPHP実装

比較テストのためPHPで各方式を実装した。フォーマットをそろえるため以下の仕様とした
* 1つの方式を1つの関数で実装する
* 入力はN桁の数字(0-9)で構成された文字列型
* 出力は数値型。入力文字列を処理した結果で主に0-9の数値が返る

正しく動作すれば良いので最適化はしていない。

### 単純な足し算
“`php5
function sum1($str) {
$cs = 0;
for($i=0,$len=strlen($str); $i<$len; $i

元記事を表示

AtCoder 入茶しました

AtCoder入茶しました。なんか色変したら記事書く文化の様なので書きます。
ABC310にて、BでつまづいてAとCのみACで絶対スコア落としたと思ったのになんか入茶できました、逆に納得いかない。

前向きな勉強法とかこんなことしました的なのは多いので、自分は反省書いていきます。

問題文の読み違いをやらかす

AtCoderの問題文は丁寧に読めば論理的に解釈の余地が入るようなものはないです。しかし、制限時間付きでやってると問題文を斜め読みして、入出力サンプルをざっと見て、憶測の入った解釈で解答に臨んでしまうことも多く、実際それでも9割ぐらいは正答できるんですが、やっぱり1割ぐらいはなんか勘違いや読み違いをしてしまうもので、その間違った解釈でコードを書き、WAでもコードが間違ってるんだと思って何度やっても通らない修正を繰り返してしまうというパターンに数度ハマりました。おおよそコードが思った通りに書けているのにサンプルすら正答にならないなら問題文を読み直すべきでした。
プログラマーが最も学ぶべき言語は日本語というのは至言です。

直近のやらかし案件です
[ABC309 B](htt

元記事を表示

Setup Unit Test with PHP Laravel in windows

# Outline
前回、Laravel + MariaDB + IIS といろんな環境を構築して、phpunitを使う環境のドキュメントを作成した。
今回はシンプルに、phpunitを学習するための最低限の環境を構築、かつサンプルコードで1つ書いてみるところまでをドキュメントとして残す

# PHP

## install PHP

https://www.php.net/

php windows versionのzipをダウンロードする。
今回、Non Thread Safe versionを使う。

Thread Safeに関する記事は、以下参照。使用環境によって異なる。

https://techplay.jp/column/504

zipをdownload後、解凍し任意の場所に配置する。
今回、一般的に使われる、c:\phpに配置した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/5ffb719f-9d79-6ae4-9783-596109ab9090

元記事を表示

WSL2, Laravel Sail 環境でXdebugを有効にする

# WSL2, Laravel Sail 環境でXdebugを有効にする
## Background
最近laravel sailをよく使うが、xdebug環境を整えたことがなかった。
`php artisan serve`を使わない方法を調べてもなかなか解決しなかったのでまとめ。

## Environment
– wsl2, ubuntu
– PHP 8.2.8, laravel 10.14.1
– Xdebug v3.2.1

## Solution
※sailでアプリケーションディレクトリ作成後からの内容になります。
編集対象のファイルは以下の4つ。
– php.ini
– docker-compose.yml
– .env
– launch.json

### php.ini
通常はvendor配下に存在しているので、以下コマンドでアプリフォルダ直下に持ってきます。
– wslで実行
– `./vendor/bin/sail sail:publish`
– container内で実行
– `php artisan sail:publish`
コマンド実行するとアプリディレ

元記事を表示

WindowsでMAMPを使うとlaravelインストールでエラーが出ます

# 概要
laravelをインストールしてるんだけどできない!
ちょっと理由がありMAMPを使っていたら、問題発生!解決策を見つけるぞ!
と思って沢山対策を調べましたが全然なかったので、記事にしました。

# バージョン
– laravel 9.x
– composer 2.5.8
– php 8.1

# エラー内容
“`
laravel/framework[v9.36.4, …, 9.x-dev] require league/flysystem ^3.8.0 -> satisfiable by league/flysystem[3.8.0, …, 3.x-dev].
– laravel/framework[v9.18.0, …, v9.36.3] require league/flysystem ^3.0.16 -> satisfiable by league/flysystem[3.0.16, …, 3.x-dev].
– laravel/framework[v9.0.0-beta.2, …, v9.17.0] require lea

元記事を表示

【Laravel】フラッシュメッセージの書き方

保存や作成などを実際に行った時に一目でわかりずらい時にフラッシュメッセージを表示させると

利用者は、登録された事が一目でわかるため快適にアプリケーションを利用できます。

今回は、画面が切り替わりながらデータを持ち越すということで`Session`を使って表示させていきます。

## 書き方(複数あり)

### **①**

`session()`ヘルパ関数の`flash()`メソッドでキー`’message’`とバリュー`’登録できました。’`と書く

“`php
session()->flash(‘message’, ‘登録できました。’);
“`

### ②

useでセッションを読み込んで`Session::flash`でキー`’message’`とバリュー`’登録できました。’`と書く

“`php
Session::flash(‘message’,’登録できました。’);
“`

### ③

`redirect()`する際に`with()`メソッドでキー`’message’`とバリュー`’登録できました。’`と書く

“`php
redirect()->w

元記事を表示

【イベント】PHPカンファレンス福岡2023でLT初登壇しました

6月24日(土)に[PHPカンファレンス福岡2023](https://phpcon.fukuoka.jp/2023/)が開催されました。(4年ぶり!)

カンファレスでLT登壇を行ったので、前後の感想をまとめました。
お気軽にお読みください!

https://fortee.jp/phpconfukuoka-2023/proposal/07dea75c-91f3-4987-8d4b-3529b8e073e1

https://www.youtube.com/@phpphpconfuk

# プロポーザル応募〜採択
自分がエンジニアへ転職したきっかけの一つがカンファレンスなので、登壇は昔からの目標でした。

とはいえ、登壇に応募し始めたのはつい最近です。コロナ禍でオフラインイベントそのものが減っていたこともありますが、過去に参加したどのカンファレンスも登壇のレベルが高くて尻込みしていました。

ですが今年はエンジニア5年目の節目もあり、今後のカンファレンス開催可否も予想がつかないので思い切って応募しました。

採択の連絡をいただいた時は、嬉しい反面プレッシャーを感じました。

# 登壇

元記事を表示

PHP、CURLFileでファイルをアップロードする。(multipart/form-data、POST)

PHP、CURLFileでファイルをアップロードするコードです。
試行錯誤したので備忘録として残します。
※$_FILES、”Content-Type: multipart/form-data”、POSTを使用しています。

# 本記事の環境

ホストOS:Windows10 Pro 64bit 8GB
ゲストOS:Red Hat Enterprise Linux release 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
PHP:PHP 7.4.15
Tera Term:4.105
コマンドプロンプト
ホストOS側に実ソース

# ソースコード

“`php
$curl_file = new \CURLFile($_FILES[‘uploadfile’][“tmp_name”], $_FILES[‘uploadfile’][“type”], $_FILES[‘uploadfile’][“name”]);
$option = [
‘aaa’ => ‘AAA’,

元記事を表示

Laravel_パスワード再設定用の”Gmai”アドレスを設定する

# Laravel_パスワード再設定用の”Gmail”アドレスを設定する
パスワード再設定用のメールを送信する。
※メールアドレスはGmailを使用する。

## 1.Googleアカウントで必要な設定をする
①Googleアカウント > セキュリティを開く。
②2段階認証を有効にする。
③アプリパスワードを設定する。
 1. 以下の”2段階プロセス”をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/3fc7a08e-d454-49d1-f380-5b362f3fae64.png)
 2. 以下の”アプリパスワード”をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/eab2701f-f4e5-4d37-075b-f51bed76882d.png)
 3. 以下のように設定する。
 アプリ:メール
 名前:”その他”を選択し、作成し

元記事を表示

Laravelでログイン機能を実装する方法(準備編)

# Laravelでログイン機能を実装する方法(準備編)

Laravelでログイン機能などの認証機能を実装する時は、`Laravel UI`というパッケージを
使用すると簡単に実装できる。(Laravelのバージョンが9系の場合)
Laravel UIの場合、CSSフレームワークはBootStrapになる。

## 1.Laravel UIをインストールする。
①VS Codeのターミナルまたはコマンドプロンプトを開き、
 Laravelをダウンロードしたディレクトリまで移動する。
②以下のコマンドを実行する。
“`
composer require laravel/ui
“`
③2分程度待ち、以下のように出たらOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/cebedfea-65cf-bc96-68ec-f3425a56507a.png)

## 2. Bootstrapをインストールする。
①Bootstrapの認証機能用のファイルを同時にインストールす

元記事を表示

if文はなぜ 変数not=false でtrueを表すことがあるか

# if文はなぜ 変数not=false でtrueを表すことがあるか

trueが10進数で言う1を表すか、-1を表すかはプログラミング言語によって異なるから。

例えばVB.NETではTrueは32bit版ならFFFFFFFF(16進数)となって-1を表すけど、PHPだとTrueは1になる。(バージョンによるかもしれないが)

VB.NETでTrueがFFFFFFFF(16)となっているのは、CPUの処理サイズが32bit単位なら1にしようが-1にしようが確保メモリ領域のサイズは32bitで一緒だからって先輩から聞いたんですが、本当ですか?

# あとがき
情報処理技術者試験で2進数の話を学んだときは「今時の実務で使うときはこないでしょ」って思ってましたが、使いました。必要です。

元記事を表示

連想配列の追加方法(PHP編)

**paiza**の森の課題プログラムを作成しました。
***問題***はこちら

>n 人の人に関して、それぞれの人の名前と財産が与えられます。その後に人名 S が与えられるので (S は最初に与えられた名前のうちのいずれか) 、 S の財産を表す整数を出力してください。

挑戦しました

“`PHP

元記事を表示

DockerからSDK経由でAWSのS3にアクセスする時に出会ったエラーの正体は、、、

# はじめに
自分がだいぶ遠回りしたので同じような人がなんだそういうことかよとなるようにここにメモしておきます!(*´ω`*)
ちなみに後々出てくる`credentials`は期限設定によりますがセッション切れたらちゃんと新しいのにしないと使えません。

# どんなコードを書いていた?

“`PHP

$s3Client = new S3Client([
‘profile’ => ‘277650267482_PowerUserAccess’, //どのプロファイル使うか(後で詳細記載します。)
‘region’ => ‘ap-northeast-1’, //SSO Regionの箇所のとこなのかなと?(後で詳細記載します。)
‘version’ => ‘2006-03-01’, //ここ決まりっぽいです。またはlatestかと
]);

try {
$result = $s3Client->createBucket([
‘Bucket’ => ‘abcde-img’,
]);
} catch (AwsException $e)

元記事を表示

【PHP8.3】PHP8.3の新機能

[PHP8.3](https://qiita.com/rana_kualu/items/91111443105a75a55e2f) / [PHP8.2](https://qiita.com/rana_kualu/items/fc4b02e2daaf102aa92f) / [PHP8.1](https://qiita.com/rana_kualu/items/a6601b49e0591eb42200) / [PHP8.0](https://qiita.com/rana_kualu/items/fe7998fbe773544d5d25)

2023/07/18、PHP8.3が[フィーチャーフリーズ](https://wiki.php.net/todo/php83)しました。
言語機能に関わるような機能の追加・変更が締め切られたということです。
今後はデバッグを繰り返しながら完成度を高めていき、2023/11/23にPHP8.3.0がリリースされる予定です。

というわけで[PHP8.3で実装されるRFC](https://wiki.php.net/rfc#php_83)を見てみましょう。

元記事を表示

プログラマ泣かせのブラウザキャシュ

## 直したはずのCSSが当たっていない
CSSの修正って結構面倒ですよね。もちろん最近はCSSを直接編集せずSASSの技術を使うことが多いと思います。それでも、細かい数字を調整するのは苦労します。
それでやっとできたと思って、確認すると何も変わっていない。これほどガックリすることはありません。
SASSのコンパイルがうまくいってないのか?CSSファイルを直接エディタで確認しても、ちゃんとコンパイルされています。
実際、これで1時間ぐらい悩むのことは何度かありました。

![](https://storage.googleapis.com/zenn-user-upload/03ba3b196117-20230628.jpg)

## そんな時は強制リロード
まず、試してもらいたのがこの強制リロードです。それってなにかというと、修正したCSSファイルやJSファイルを強制的に再読み込みすることです。

このブログをご覧になっている方々にとっては当然のこととは思いますが、あえて説明しておくとブラウザは常に画面に表示すべき内容(専門的な表現だとレンダリングすべきDOM要素)を常に全てサーバー

元記事を表示

OTHERカテゴリの最新記事