spl_autoload_register()
関数を使用してすべてのファイルを含めています。拡張機能を持つクラス.class.php
または.php
直接インクルードするクラスが必要です。私は以下のクラスを作成し、2つの異なる関数を登録し、すべて正常に動作しましたが、
両方の拡張機能を一緒に含めるには、1 つの関数のみを登録する必要があるように、いくつかの方法があると思います。
私の機能を見て、私が欠けているものを教えてください
私のフォルダ構造
project
-classes
-alpha.class.php
-beta.class.php
-otherclass.php
-includes
- autoload.php
-config.inc.php // define CLASS_DIR and include 'autoload.php'
autoload.php
var_dump(__DIR__); // 'D:\xampp\htdocs\myproject\includes'
var_dump(CLASS_DIR); // 'D:/xampp/htdocs/myproject/classes/'
spl_autoload_register(null, false);
spl_autoload_extensions(".php, .class.php"); // no use for now
/*** class Loader ***/
class AL
{
public static function autoload($class)
{
$filename = strtolower($class) . '.php';
$filepath = CLASS_DIR.$filename;
if(is_readable($filepath)){
include_once $filepath;
}
// else {
// trigger_error("The class file was not found!", E_USER_ERROR);
// }
}
public static function classLoader($class)
{
$filename = strtolower($class) . '.class.php';
$filepath = CLASS_DIR . $filename;
if(is_readable($filepath)){
include_once $filepath;
}
}
}
spl_autoload_register('AL::autoload');
spl_autoload_register('AL::classLoader');
注: line には影響しませんspl_autoload_extensions();
。なぜ?
私もこのブログを読みましたが、実装方法がわかりませんでした。