私が所属するBASE社では10年以上モノリシックなサービスでの開発が続いていましたが、デプロイ時間の増加や依存関係の複雑さにより機能提供のスピードに課題が出てきました。その課題を解決するためにモジュラーモノリスの新システムへの移行が始まって丸4年が経過しました。その現在地をお話しします。 http…

4年ほど前から作成している PHPのソースコードからクラス図を生成するためのCLIツールがあります。 これを、簡単にVSCodeから利用できるようにするVSCode拡張機能を作成しましたので、どんな体験になるかを紹介します。 前提 以下の2点の項目を前提とします。 PHPのプロジェクトに、php-class-diagramをインストールしておいてください。composer require --dev smeghead/php-class-diagramを実行します。 PlantUMLのプレビュー機能は、既存のプラグインを使用しますので、別途使えるようにしておいてください。UMLの爆速プレビュー環境をVisual Studio Code + PlantUML Server on Dockerで簡単に構築する クラス図を出力するまで クラス図を出力するまでの概要をスクリーンショットで紹介します
Symfony Advent Calendar 2020 12日目の記事です。 Symfony CLIはSymfonyローカルマシンでの開発を支援するコマンドラインツールです。Laravel Installer(laravelコマンド)のようにSymfonyプロジェクトの作成にもできますが、それ以外にも優れた機能を備えています。その機能のうち、ぼくがよく使っている便利な機能をいくつかご紹介します。 Symfonyプロジェクトの作成 Symfonyのプロジェクトを作成するにはlavael Installerと同じ感じです。 プロジェクト名でディレクトリを作成し、ディレクトリ内にSymfonyをインストールします。以降のコマンドはプロジェクトのディレクトリに移動して、実行します。 余談ですが、Symfony CLIはコマンド実行時に、必ずアップデートを確認・ダウンロードし、常に最新のものが利用
The Playground let you to execute basic PHP code in real time using WebAssembly technology.
PHP8.4 / PHP8.3 / PHP8.2 / PHP8.1 / PHP8.0 2024/08/13、PHP8.4がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2024/11/21にPHP8.4.0がリリースされる予定です。 というわけでPHP8.4で実装されるRFCを見てみましょう。 RFC Property access hooks 賛成42反対2で受理。 プロパティフックです。 class HOGE{ public string $tel{ set{ if(!ctype_digit($value)){ throw new ValueError("電話番号は数値のみ"); } if(strlen($value) < 10){ throw new ValueError("電話
この記事はPHPStan開発者のOndřej Mirtesによって2024年8月27日にPHPStan Blogに書かれた記事を翻訳したものです。 phpstan.org 最初のPHPStan 1.0リリースから3年が経ち、PHPStan 2.0が近づいてきました。新しいメジャーバージョンのアイデアのリストを精査した結果、いくつかを前倒しして1.xシリーズでリリースし、Bleeding Edge 設定トグルの背後に隠して、PHPStanユーザーにより早く楽しんでもらえるようにしました。 これは PHPStan 1.12に限ったことではなく、1.0以降に当てはまります。Bleeding Edgeを有効にすると、基本的には未来に生きることになります。次のメジャーバージョンですべてのユーザーに対して有効になる新しいルールと動作の変更を利用できます。これがアーリーアダプターへの特典です。 ここにひ
8月30日、Laravelは「Laravel Cloud」を発表した。Laravelアプリケーションを即座にデプロイできる新しいクラウドプラットフォームだ。 Laravelの創設者であり主要な開発者であるTaylor Otwell(テイラー・オットウェル)氏が、Laracon 2024のキーノートスピーチで初めてこのプラットフォームを公開した。デモンストレーションでは、プロジェクトの作成からLaravelアプリケーションの起動までがわずか25秒で完了したことが示された。 Laravel Cloudは完全に管理されたインフラストラクチャプラットフォームであり、LaravelとPHPに最適化されている。 以下に、Laravel Cloudの主な機能を示す。 即時デプロイ:Laravelアプリケーションをわずか数秒で起動・デプロイできる。 自動スケーリング:アプリケーションの需要に応じて、自動的
はじめに PHPUnitとPestのそれぞれでスナップショットテストをやってみる。 環境 PHP 8.3.10 スナップショットテストとは 指定された期待値と保存した同じ値のスナップショットを比較してコードをテストする。 何もしていないのに壊れたなど予期していない変更を早期に発見する場合に便利な方法です。 やってみる では、それぞれやってみます。 サンプルコード 今回のスナップショットテストで使うコードです。 適当なjsonを返すだけのコードです。 <?php declare(strict_types=1); function json_render(): string { $values = [ [ 'name' => 'りんご', 'price' => 150, "stock" => 10, ], [ 'name' => 'バナナ', 'price' => 200, "stock" =
IPA(Information-technology Promotion Agency, Japan:情報処理推進機構)は7月5日、「PHPの脆弱性(CVE-2024-4577)を狙う攻撃について|情報セキュリティ|IPA 独立行政法人 情報処理推進機構」において、2024年6月に公開されたPHPの脆弱性を悪用するネットワーク貫通型攻撃が確認されたとして注意を喚起した。IPAは国内の複数の組織においてWebシェルが設置されるなどの被害を確認したと説明している。 PHPの脆弱性(CVE-2024-4577)を狙う攻撃について|情報セキュリティ|IPA 独立行政法人 情報処理推進機構 ネットワーク貫通型攻撃とは ネットワーク貫通型攻撃とは、ルータやVPN(Virtual Private Network:仮想プライベートネットワーク)機器のようなインターネットに直接接続されたデバイスを侵害して、
非公式!! 資料を公開されているかたのリンクをまとめます! PHP コードの実行モデルを理解する SPLから始める「データ構造」入門 Fat Controller は悪か? ~光のFat Controller・闇のガリController~ 並行処理を学びGuzzleと仲良くなる プロジェクトマネジメントとは? 経験から学ぶ視野と視座 10社以上のCTO/技術顧問を経験して見えた、技術組織に起こる課題と対策 有効な使い方を正しく理解して実装するPHP8.3の最新機能 なぜキャッシュメモリは速いのか Laravel のセキュリティはどうなってる?突撃コードリーディング 書き込み処理をスケールさせるために必要な非同期処理の基本と考え方 リモートワーク時代の守護神:PHP開発者のためのセキュリティ強化術 作って学ぶ ★ 検索機能 WebサイトのXSS脆弱性絶対転がす ―Content Secur
JSON schema Root Package Properties name description version type keywords homepage readme time license authors support funding Package links require require-dev (root-only) conflict replace provide suggest autoload PSR-4 PSR-0 Classmap Files Exclude files from classmaps Optimizing the autoloader autoload-dev (root-only) include-path target-dir minimum-stability (root-only) prefer-stable (root-onl
オートロードとは何か phpのオートロードとは、未定義のクラスを呼び出した時に、クラスの定義を読み込む仕組みのことです。 オブジェクト指向プログラミングではクラスを定義するときにファイルを分割することが一般的です。例えば、Userクラスを定義するときに、User.phpというファイルを作成し、その中にUserクラスを定義します。 このとき、他のファイルでUserクラスを使いたい場合には、通常User.phpを読み込む必要があります。phpでは、require_onceなどといった関数を使ってファイルを読み込むことができます。 しかし、読み込むクラスが多くなると、ファイルの先頭にたくさんのrequire_onceを書く必要があり、コードが読みにくくなります。 そこで、phpでは、未定義のクラスを呼び出した時に、クラスの定義を読み込む用途で指定した処理をさせることができる仕組みが用意されていま
class HOGE{ public string $tel{ set{ if(!ctype_digit($value)){ throw new ValueError("電話番号は数値のみ"); } if(strlen($value) < 10){ throw new ValueError("電話番号は10文字以上"); } $this->tel = $value; } get{ return '電話番号は' . $this->tel; } } } $hoge = new HOGE(); $hoge->tel = '123456789012'; // OK $hoge->tel = 'abcdefghijkl'; // Uncaught ValueError: 電話番号は数値のみ $hoge->tel = '123'; // Uncaught ValueError: 電話番号は10文字以上
PHPunit10以降ではDataProvider関数はstaticが推奨になりました。 https://docs.phpunit.de/en/10.5/writing-tests-for-phpunit.html#data-providers staticなので $this を使ったテストクラスの状態を参照できなくなります。 そもそもDataProviderはテストケース実行前に呼ばれるため、setUpで作成したデータを参照できません。 class ExampleTest extends TestCase { private int $expectValue; protected function setUp(): void { parent::setUp(); echo "setUp called\n"; $this->expectValue = random_int(0, 9); }
本記事では、Docker を用いて PHP の開発環境を構築します。Docker に詳しくない方でも理解しやすいように、Docker の基礎概念と用語も解説しています。 本記事は、お使いのパソコンで Docker が利用できる状態であることを前提としてます。 まだ Docker をインストールされてない場合は、下記のリンクから Docker の公式ウェブサイトにアクセスし、使用している OS に合った Docker をインストールしてください。 Get Started with Docker - Docker Docker とは Docker は、ホストマシン上でアプリケーションやサービスを隔離された環境で実行するために使用されるツールです。 Docker を使用することで、ホストマシンの環境に影響を与えることなく、開発環境を構築したり、アプリケーションをデプロイしたりすることができます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く