PHPカンファレンス小田原2024での発表資料です https://fortee.jp/phpconodawara-2024/proposal/4d39c7ef-058c-4648-b1d7-5510497e0d81
![単体テストを書かない技術 #phpcon_odawara](https://cdn-ak-scissors.b.st-hatena.com/image/square/19f13f3ef979d7a3cf8b3b525f1a2590a37297bd/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F0225ffe59b404b148d4bdf9d33a246f4%2Fslide_0.jpg%3F29720498)
サーバーサイドエンジニアの田実です! 今回はPHPのモックライブラリである mockery/mockery がどのようにして動いているのかを紹介します。 本記事は PHP Advent Calendar 2023 の5日目の投稿になります! コードリーディング 今回紹介するmockery のバージョン1.6.6 です。 Mockery::mock() メソッドを使った以下のパターンでコードを読んでいきます。 <?php Mockery::mock(Service::class, function (MockInterface $mock) { $mock->shouldReceive('hoge')->once(); }); Mockery::mock() は Mockery\Container::mock() を呼び出します。 https://github.com/mockery/moc
こんばんは 今回もLaravelネタです。 FormRequestはLaravel使っているうえで結構使うのですが、それのテストって書いてなかったなぁと思ったので、書いてみようと思いました。 本題 まずこんな感じのFormRequest作ります。 UserRegisterRequest.php <?php namespace App\Requests; use App\Requests\Rules\UserStatusExistsRule; use Illuminate\Foundation\Http\FormRequest; class UserRegisterRequest extends FormRequest { /** * @return bool */ public function authorize(): bool { return true; } /** * @retur
PHP にはアプリケーションを実行せずに静的にコード品質をチェックする静的解析ツールがいくつかあります。有名なところでは、PHPStan や Psalm、Phan、PHPMD などがあります。本エントリでは、まだこうした静的解析ツールを導入していないプロジェクト向けに PHPStan 導入の流れをまとめてみました。 3(4) 行まとめ サンプルコード PHPStan とは 適用方針 Playground PHPStan のインストール Composer Composer(Larastan) Docker 設定ファイルの作成 PHPStan の実行 主なエラー(level=0) baseline ファイルの作成 baseline ファイルの修正 CI での自動実行 GitHub Actions の設定 ブランチ保護ルール さいごに 3(4) 行まとめ composer もしくは Docker
foreach(glob('dir/{*.gif,*.zip,*.pdf}',GLOB_BRACE) as $file){ if(is_file($file)){ echo htmlspecialchars($file); } } 引数にflagsというのをつけていろいろできる。 参考(公式サイト) array glob ( string $pattern [, int $flags = 0 ] ) flags GLOB_MARK - 各ディレクトリにスラッシュを追加します GLOB_NOSORT - ディレクトリに存在するファイルを返します (ソートはされません)。このフラグを使わない場合は、パス名をアルファベット順にソートします。 GLOB_NOCHECK - 検索パターンにマッチするファイルが見つからない場合に、 検索パターン自身を返します GLOB_NOESCAPE - バックスラ
概要 ・PHPのコーディング標準(規約)チェック ・PHPのバージョンアップに伴う互換性チェック を行うため、PHP_CodeSnifferとPHPCompatibilityを使ったときのメモです。 [作業環境] Windows10 PHP5.4以上(必須) [必要なもの] Composer Git PHP_CodeSnifferとは コーディング規約(PEARやPSRなど)に沿った構文チェックのためのツールです。 Github:PHP_CodeSniffer コーディング標準(規約)に違反している箇所の検出(phpcs) コーディング標準(規約)に違反している箇所を自動的に修正(phpcbf) などを行うことができます。 PHP_CodeSnifferには「PEAR, PSR1, PSR12, PSR2, Squiz, Zend」などのコーディング標準(規約)がデフォルトで用意されており
Symfony2 のロギングでデフォルトで使われてる Monolog について調べたので忘れないうちにまとめておく。 何回かに分けて書きます。今回は Monolog イットセルフについて。 Monolog のバージョンは 1.7.0。 Monolog の構造 Monolog は4つのコンポーネントからなります。 ロガー コントローラで $logger = $this->get('logger') って取得するおなじみのあいつ。Logger クラス。 プロセッサとハンドラをいずれも複数登録できます。 ハンドラ メイン処理担当。ロガーからログ情報を受け取って、プロセッサで前処理して、フォーマッタで成形して、出力する。 プロセッサを複数とフォーマッタを1つ、登録できます。 また、以降のハンドラに処理を続行させるかどうかのフラグ (bubble フラグ) も持ちます。 代表的な StreamHan
phpcs.md ルール 内容 Generic.WhiteSpace.DisallowTabIndent.TabsUsed インデントにハードタブを使っている。ソフトタブにすること Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine メソッドの開始ブレスは、改行すること CakePHP.Commenting.FunctionComment.Missing phpdocのコメントがない CakePHP.WhiteSpace.TabAndSpace タブとスペースに関するエラー。インデント揃えのための複数スペースはダメなど。 Generic.WhiteSpace.DisallowTabIndent.NonIndentTabsUsed インデント揃えをするためにハードタブを使ってはならない。スペースを使うこと Squiz.Wh
array_mapの第3引数にrange関数で数字の配列を作って渡すと配列自身のindexを渡しているわけではありませんが、良い感じになります。 その場合は第2引数引数と同じ要素数じゃないといけません。 <?php $array = ['Laala', 'Mirei', 'Sophie']; $withNumberArray = array_map(function ($name, $index) { return sprintf('%d. %s', $index, $name); }, $array, range(1, count($array))); var_dump($withNumberArray);
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く