Webフレームワークの基本原理と設計思想

Webフレームワークは、特定の問題を解決するために生まれた開発規約の集合体である。たとえば、SmartyのようなテンプレートエンジンはPHPとHTMLの分離を目的としているが、フレームワークはそれよりも広い視点で、コードの構造・ディレクトリ配置・アクセス方式などを標準化し、開発の再利用性と保守性を高めることを目的とする。 開発者が独自にプロジェクトを構築する際 ...

6月16日 23:49 投稿

PHPスクレイピング用セレクターライブラリの実装

概要 この記事では、PHPでスクレイピングを行うためのセレクターライブラリの実装について解説します。このライブラリは、phpspiderプロジェクトから抽出した独立したコンポーネントとして利用できます。 インストール このセレクターライブラリは、Composerを介してインストールできます。ただし、ここではコア機能のみを抽出した実装を紹介します。 コード実装 <? ...

6月16日 21:54 投稿

RoadRunnerアプリケーションサーバーの詳細設定

サーバーコマンド RoadRunnerアプリケーションは、PHPアプリケーションのルートディレクトリから簡単なコマンドを実行することで起動できます。 $ rr serve カスタム設定ファイルを使用してRoadRunnerを起動することも可能です。 $ rr serve -c ./app/.rr.yaml すべてのRoadRunnerサービスを再読み込みします。 $ rr reset このコマンドをIDEのファイルウォッチャーとして ...

6月16日 19:38 投稿

Webセキュリティ実践:CTFにおけるPHPコード注入とファイルインクルージョン攻撃手法

コード実行脆弱性の悪用 PHPのeval関数は文字列をコードとして実行する危険性の高い機能です。CTFのWeb問題では、この関数の不適切な使用が攻撃の起点となります。 <?php if (array_key_exists('command', $_GET)) { eval($_GET['command']); } else { highlight_file(__FILE__); } ?> このスクリプトでは、commandパラメータの入力検証が一切行われていませ ...

6月12日 22:59 投稿

Laravel 5.6でのCRUD操作実装

基本的なテストが通ったので、CRUD機能を実装していきます。 実装手順 コントローラーの作成 ルーティング設定 CRUD機能の開発 1 コントローラー生成 php artisan make:controller TasksController 生成されたファイルは app/Http/Controllers ディレクトリ内に保存されます。 2 ルーティング設定(routes/web.phpに追加) Route::resource('tasks', 'TasksController') ...

6月12日 20:55 投稿

CodeIgniterにおける複数条件検索とページングの実装

CodeIgniterフレームワークで複数の検索条件を持つページング機能を実装する際の解決方法を紹介します。通常のページング機能と異なり、検索条件を維持しながらページングを行う必要があります。 通常のページング実装例: $this->load->library('pagination'); $page_config['base_url'] = 'http://example.com/items/list/'; $page_config['total_rows'] = 350; $ ...

6月9日 19:23 投稿

RoadRunner による PHP アプリケーションの高速化とサーバー構成

RoadRunner 概要とアーキテクチャ RoadRunner は、Go 言語で構築された高性能な PHP アプリケーションサーバーおよびプロセスマネージャーです。従来の PHP-FPM とは異なり、アプリケーションをワーカープロセスとして常驻メモリ上で実行することで、フレームワークのブートストラップ時間を排除し、処理速度を劇的に向上させます。 このサーバーは、HTTP リクエストだけで ...

6月9日 19:13 投稿

PHP 7.4とPHP 8.0のインストールとpkg-configの詳細

2022年12月21日 15:49:28 公式ドキュメント: PHP 7.4の変更点 一部の拡張がpkg-configのみを使用するように移行しています。これにより、--with-foo-dir=DIRなどのパラメータではなく、--with-fooを使用するようになります。カスタムライブラリのパスは、PKG_CONFIG_PATHに追加ディレクトリを設定するか、FOO_CFLAGSおよびFOO_LIBSで明示的に指定します。 影響を受ける拡張 ...

6月9日 16:48 投稿

PHPでWord文書の数式をインポートする方法

最近、Word文書から試験問題をインポートする機能を実装する必要がありました。しかし、文書内に複雑な数式が含まれているため、Word文書の読み込み時に以下のエラーが発生しました。 PhpOffice\Math\Reader\OfficeMathML::getElement : The tag `m:r` has no tag `m:t` defined 最初にDeepSeekに相談したところ、以下のような回答が得られました。 ご提示のエラーメッセ ...

6月9日 00:22 投稿

PHPテンプレートの基本実装と実用例

Web開発において、PHPテンプレートはロジックと表示を分離するための重要な手法です。これにより、デザイン変更とビジネスロジックの修正が独立して行え、コードの保守性と再利用性が大幅に向上します。本記事では、実際の実装を通じてPHPテンプレートの基本構造と有効な活用方法を解説します。 テンプレートの設計思想 従来のPHPファイルでは、HTML構造とデータ処理が混在 ...

6月7日 16:20 投稿