PHP を自動ロードするには 2 つの方法があります
1 つ目のオプションは __autoload を使用することです
ただし、解決されていない問題が 1 つあります。それは、インクルード前にファイルが存在するかどうかを判断する問題です。
コードをコピーします コードは次のとおりです:
set_include_path('aa' . PATH_SEPARATOR . get_include_path());
function __autoload($className)
{
//この検出を追加すると、次のようになります。 file is not in the current directory, it will be detected ファイルは存在しません、
//しかし include は成功します
if (file_exists($className . '.php')) {
include_once($className . '.php' );
} else {
exit('no file');
}
}
$a = new Acls();
2 番目のオプションは、spl を使用して自動的にロードする方法です。 spl_autoload_register()
a simple example copyコードは次のとおりです。
// if (file_exists($className . '.php')) {
// include_once($className . '.php')
// } else {
// exit('no file'); / }
//}
spl_autoload_register(); $a = new Acls(); spl_autoload_register() は、パス内で小文字のファイル名を持つ ".php" プログラムを最初に自動的に呼び出します。デフォルトの拡張子は「.ini」ですが、spl_autoload_extensions() を使用することもできます。拡張子が見つからない場合は、独自に定義した関数
functionloader1($class) を使用して検索することもできます。 {
//自分で読み込みコードを書いてみましょう
}
function loader2($class)
{
//loader1() が見つからないときは、私が探しに来ます
}
spl_autoload_register('loader1');
spl_autoload_register(' loader2');
さらにある可能性があります...
MVC フレームワークが自動ロードを実装する方法
最初にパスを設定します
'include' => array( 'application/catalog/controllers', 'application/catalog/models', ) ,$include = array('アプリケーション/コントローラー', 'アプリケーション/モデル', 'アプリケーション/ライブラリ');
set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $config['include'])); URL を取得し、コントローラーとメソッドを解析します。
次に Autoload を設定します。
コードをコピーします。 コードは次のとおりです。
class Loader
{
/**
* クラスを自動的にロードします
* @param $class クラス名
*/
public static function autoload ($class)
{
$path = '';
$path('_', '/', $class) .php'
}
}
/* *
* SQL自動読み込み
*/
spl_autoload_register(array('Loader', ' autoload')); ルーティングし、コントローラーをインスタンス化し、メソッドを呼び出すと、記述したものが実行されます
コードをコピーします
コードは次のとおりです。
/**
* ルーティング
*/
public function Route()
{
if (class_exists($this->getController())) {
$rc = new ReflectionClass($this) ->getController());
if ($rc->hasMethod($this->getAction())) {
$controller = $rc->newInstance(); ;getMethod($this->getAction());
$method-> invoke($controller); else
throw new Exception('no action')
throw new Exception('nocontroller); ');
}
初期自動読み込みが完了しました
http://www.bkjia.com/PHPjc/322152.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/322152.html
技術記事
PHP を自動ロードするには 2 つの方法があります。最初のオプションは __autoload を使用する方法です。ただし、コードをコピーする前にファイルが存在するかどうかを判断するという未解決の問題が 1 つあります。 ..