猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

PHPStan 1.11 からエラー識別子で @phpstan-ignore できるようになっていた

@phpstan-ignore-line @phpstan-ignore-next-line @phpstan-ignore [error identifier] エラー識別子 (error identifier) の確認方法 参考 PHPStan のエラーを無視したい時があると思います。 例えば、局所的に使われる private メソッドについて PHPDoc を…

【AWS】ECS のサービスを正しく分けていなくて失敗した話

AWS ECS について 失敗例1: オートスケールで壊れる デプロイ時にも同じ問題が発生する 失敗例2: コンテナが死んでタスクが落ちる まとめ AWS ECS について AWS ECS は、 クラスタの中にサービスがあり、 サービスの中にタスクがあり、 タスクの中にコンテナ…

Laravel の response()->download() で Call to undefined method BinaryFileResponse::withHeaders()【PHP】

現象 原因 withHeaders() メソッドについて 対応 その他の対応 現象 Laravel 11 で、ファイルダウンロードを実装したく、 response()->download() を使った 実装

PHPStan の「スタブファイル」について

はじめに スタブファイル スタブファイルについて スタブファイルも PHPStan の解析にかけたほうがいいのか? スタブファイルに関する設定 スタブファイルで Class not found エラーが発生した場合 訳者補足: 最後の「“Class not found” in a stub file?」と…

Laravel の Scheduler を AWS ECS と CloudWatch Logs に最適化させるには

前提 Laravel のスケジューラーを Docker で動かす ログ(CloudWatch Logs)の課題 JSON 形式でログを出す まとめ 前提 PHP + Laravel で、Web サービスを開発しており、Laravel で実装した Web API が WAS ECS (Elastic Container Service) で動いているの…

AWS CloudWatch Logs 向けに Laravel のログを JSON で出力する方法

はじめに JSON 形式のログを送ると何がいいのか 今回のサーバー構成 Laravel から JSON でログを送るには スタックトレースも出したい 課題 まとめ はじめに この記事は Qiita Laravel Advent Calendar 2023 の3日目の記事です。 1日目はこのカレンダー作成…

【PHPStan】単に Error と表示され、ファイル名がわからない: Ignored error pattern ... was not matched in reported errors.

PHPStan を実行していると、以下のように、単に Error とだけ表示された XXXXXXXXXX の部分には人によって色々な文章が表示される -- ----------------------------------------------------------------------------------------------- Error -- ---------…

PHP Laravel の HTTP テストで HTML のテストを書くときの書き方

Laravel の HTTP Test Laravel には HTTP テストという機能がある https://readouble.com/laravel/8.x/ja/http-tests.html このテストはめちゃめちゃ便利で、実際にリクエストを送って、返ってくるレスポンスをシミュレートできる。 get('/'); $response->as…

aws/aws-sdk-php で Your requirements could not be resolved to an installable set of packages.

composer ライブラリの依存エラー エラーの見かた 解決方法 詳細な解決方法 composer update guzzlehttp/psr7 guzzlehttp/promises 最後に composer ライブラリの依存エラー composer で aws/aws-sdk-php のライブラリをインストールしたところ、以下のよう…

PHPのHTTPクライアントライブラリ Guzzle を使うときに知っておきたいこと

Guzzle とは リクエストオプションの指定の方法 例外処理の方法 例外の構造 例外の意味 GuzzleException まとめ Guzzle とは HTTP リクエストを送りたいとき、例えば、Web APIを叩きたい時、PHP では Guzzle という HTTP クライアントライブラリが最も有名で…

【PHP】Laravel で JSON 形式の Web API を実装する時に考えること

はじめに JSON 形式の Web API とは Laravel で JSON を返す基本的な実装 JsonSerializable インタフェースを使う JsonSerializable を使うと便利な点 想定外の例外が発生した場合の対応 Laravel デフォルトのエラー画面 Laravel のレスポンス形式は Accept …

PHP 8.0 / 8.1 で個人的にめっちゃ使いたい機能3選

はじめに PHP 8.0 / 8.1 で個人的にめっちゃ使いたい機能3選 名前付き引数(PHP 8.0) コンストラクタのプロモーション(コンストラクタ引数のプロパティ化) Readonly Property おわりに 余談: ドメイン駆動設計について はじめに 遅れました。この記事は P…

【Laravel】ServerError のレスポンスを Json で返すために Handler に実装を見る

Handler の処理を見ていく 最初の部分 次の部分 最後の部分 $request->expectsJson() Laravel は、デフォルトで例外をキャッチして、サーバーエラーの表示をしてくれる。 この処理を行っているのは、 App\Exceptions\Handler である。 このクラスは Illumina…

PHP + Laravel on Docker で MySQL に接続しようとして could not find driver at ...

環境 エラー内容 調査 環境 Docker の php:7.4.16-apache を利用 Laravel を利用 エラー内容 [2021-08-24 10:43:16] production.ERROR: could not find driver at /app/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671) 調査 …

【PHP】autoload された class が定義されたファイルを確認する

結論 どういう時に使うの? Carbon と Chronos の例 Chronos と Laravel 結論 PHP の ReflectionClass を使えば可能です。 getFileName()); どういう時に使うの? PHP には autoload という機能があり、皆さん普通はこの autoload を利用しているかと思いま…

PHPでボトムアップDDD: 値オブジェクト / ValueObject

値オブジェクトを使わず、プリミティブな型を使うとどうなるか 各IDの型が分かりづらい delete メソッドの引数の型チェックが弱い そこで値オブジェクト さいごに 値オブジェクトを使わず、プリミティブな型を使うとどうなるか ブログシステムを考えましょう…

これまで僕が仕事で使ったWebフレームワークと言語の特徴

これまで僕が業務で触ったことあるフレームワーク(と言語)は Laravel (PHP) Slim Framework (PHP) Django (Python) Gin (Go言語) で、どれも1年以上は保守しています。 長年業務で使ってきたこれらのフレームワークについて、実際使ってみてどうだったのか…

2021年 PHP 8 でスクレイピングするなら php-html-parser

phpQuery vs php-html-parser この記事で扱う PHP のバージョン php-html-parser をインストール 実際に使ってみる まとめ phpQuery vs php-html-parser 以前、以下の記事を書きました。この記事では phpQuery というライブラリを使いましたが、phpQuery は3…

PHP の composer でパッケージを uninstall する時の正しいコマンドは何か

composer require と composer remove 結論: composer.lock を作り直すしかない composer.lock を作り直したくない 依存をきれいに消すコマンドは無い composer update コマンドをうまく使う composer update する場合の注意点 結論 composer require と com…

【2021/04/27】Composer の脆弱性が出たのでアップデートする

news.mynavi.jp 脆弱性の詳細ですが、理解しようとするとかなり時間が掛かりそうなので省略します。 composer のバージョンアップは難しくなく、アプリケーションへの影響も小さいので、サクッとアップデートしましょう。 $ composer self-update Updating t…

2020年のQiitaアドベントカレンダーで書いた内容まとめ

今年のアドベントカレンダーでは10本の記事を書いたので、その10本をまとめます。 個人開発でサービスをリリースまで持っていくポイント レガシーなプロダクトに Laravel を導入する第一歩 PSR-2 に変わって新しく制定された PSR-12 のチェックを PHP_CodeSn…

【PHP】PSR-12 のチェックを PHP_CodeSniffer で行う

はじめに PSR-12 とは PSR-2 と PSR-12 の違い PHP_CodeSniffer とは IntelliJ / PHPStorm でスタイルチェックする Jenkins でコーディングスタイルチェック まとめ はじめに この記事は PHP アドベントカレンダー 4日目の記事です。 qiita.com 昨日は @taro…

レガシーなプロダクトに Laravel を導入する第一歩(Laravel DI と Facade)

はじめに レガシーなプロダクトに Laravel を導入する Laravel について なぜ部分的にでも Laravel に移行していきたいのか Laravel の DI 機能 Laravel の Facade どうやってレガシーコードから Laravel DI と Facade を使うのか Kernel の中身をちょっと見…

PHP(Laravel)の開発を始めるときに知っておきたいこと 2020

仕事で PHP のプロダクトのリビルトを行っていて、 PHP 開発を始めるために必要なことを整理したので、ブログでも公開しておきます。 PHP のプロダクトを開発しているチームに、新しい人が Join したときなどに使えます。 知っているところは読み飛ばして、…

新しいPHPコーディング規約 PSR-12

PHP のコーディング規約 PSR-12 の対応状況 PHP のコーディング規約 PHP は PHP-Fig という団体で様々な規約が決められているが、2019年8月、PSR-2に変わり、PSR-12 という新たなコーディング規約が採用された。 PSR-12 が出るまでは、PSR-1, PSR-2, PSR-4 …

無料の Open LiteSpeed で .htaccess を使う

Laravel/LumenをLiteSpeedで動かす 無料の Open LiteSpeed で .htaccess を読めるのか どうしたのか rewrite enable 1 rulesの中身 設定が適用されているか確認する まとめ Laravel/LumenをLiteSpeedで動かす Laravel (や Lumen )を LiteSpeed 上で動かし…

【PHP】Lumen で Migration

Lumen artisanコマンドを叩く Migration ファイルを編集 Migration コマンドを叩く Eloquent を有効に Lumen Laravel を軽くしたと言われる Lumen で Migration をしてみます artisanコマンドを叩く Laravel と同じっぽいので Laravel の Eloquent のドキュ…

PHPEarth の Docker イメージに PDO をインストールする

PHPEarth とは PHPEarth のイメージにはPDOが入っていない Dockerfile で確認 ドキュメントを確認 Dockerfile で追加してみる 動かない理由を調査する php -m で見てみる php.ini を見る イメージを削除してやりなおしてみる 結論 PHPEarth とは PHPの色々な…

Docker phpearth/php:7.3-litespeed の admin のパスワードを設定する

/etc/litespeed/admin/htpasswd がユーザー名とパスワードの設定になっている。 www.luft.co.jp などのツールをつかってできたhtpasswdファイルをそこに配置すれば、そのユーザー名とパスワードでログインできるようになる。

Laravelより早いLumenとLiteSpeedを組み合わせてDocker上で動かす

はじめに Lumen Lumen Lumenのアプリを作成する Docker LiteSpeed LiteSpeed とは Docker の LiteSpeed イメージ Docker LiteSpeed ファイル構造 Lumen のための設定 まとめ はじめに この記事では、Docker上でLiteSpeedを使ってLumenを動かすことを目標にし…