山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

PHP 学習 part. 12

フレームワークによる効率的な開発

パーフェクトPHP

パーフェクトPHP

そういやPHPの勉強してたっけと今更思い出したので、再開したいと思います。

githubソースコードを上げることにしました。

GitHub - YamaKasa3/php_application

ディレクトリ構造

application/
├controllers/
├core/
├models/
├views/
├web/

controllers: 読んで字のごとくコントローラを配置します。core: フレームワークを構成するクラスを配置します。models: モデルを配置します。views: HTMLファイルを配置します。web: webブラウザからアクセスしたときのドキュメントルートとなります。

いわゆるMVCってことでしょうか。

core/ClassLoader.php

オートロードに関する処理をまとめたクラス。

core/Request.php

GETやPOSTの判定や値の取得、リクエストされてURLの取得などの機能を実装します。

$_SERVER['REQUEST_METHOD'] // ページにアクセスする際に使用されたリクエストのメソッド名
$_SERVER['HTTP_HOST'] // 現在のリクエストに Host: ヘッダが もしあればその内容

core/Router.php

Routerクラスはルーティング定義配列とPATH_INFOを受け取り、ルーティングパラメータを特定する。

core/Response.php

HTTPヘッダとHTMLなどのコンテンツを返します。HTTPヘッダを送信するためにheader()関数を使います。

core/DbManager.php

PDOを使ってデータベースに対する操作を記述します。

core/DbRepository.php

テーブルごとにDbRepositoryクラスの子クラスを作成します。SQLの実行によく使われる処理は抽象化しておきます。

調べたこと

ホスト

・「クライアント」に対応するのは「サーバ」 ・「ゲスト」に対応するのは「ホスト」

サーバとホストの違い

GETとPOST

GETは冪等性があり、POSTはない。

header

PHP: header - Manual