phpフレームワーク自作4

オートロード機能

鎧山
 ソースコードの中で任意のクラスのインスタンスを作る場合は、そのクラスが定義されているファイルをあらかじめ取り込んでおかなければなりません。
こういったクラスがソースコードの中にたくさんある場合はコードの可読性が欠けたり、読み込みミスをしたりする場合があります。
そこで、phpのオートロードを組み込むことによって、それらの問題を解消し、コーディングの手間を減らすことが出来ます。
ここでは、ライブラリーの読み込み部分とアプリケーションの読み込み部分を分けてますが、すべて、composer.jsonファイルに記述して1箇所にまとめる方法も考えられます。
ライブラリーとアプリケーションが一対の場合はこの方が簡単であると思われます。

参考サイト
PHPの名前空間とcomposerのautoload (PSR-4) サンプル

 

myfram_autoload
フレームワークのオートロード処理の流れ

  1. document rootからbootstrap.phpファイルを読み込みます。
  2. bootstrap.phpからオートロード処理クラスのファイルを読み込みます。
  3. アプリケーションの読み込みクラスがあるトップ階層の名前空間名を定義します。
  4. 登録、インスタンス生成をするクラスのインスタンスを生成します。
  5. ローダー処理をします。

bootstrap.phpファイルでは、上記の処理とcomposerを使ったライブラリー読み込み処理の2つを行っています。

bootstrap.php


MySmartyは親クラスをvendorディレクトリのautoload.phpで読み込まれたものを、phpフレームワークのClassLoaderで読み込んでいます。したがって、bootloade.phpでは、autoload.phpを最初に読み込む(記述する)必要があります。

ClassLoader.php

読み込むphpファイル名はクラス名を同一である必要があります。また、phpファイルの中にひとつのクラスが定義されていることが前提条件です。

MySmarty.php


テンプレートライブラリーであるsmartyのクラスの継承、独自設定クラスです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です