これらを見てきましたが、
引数としてオートローダーに渡されたものとは異なる名前のクラスをロードします
私は変更できますが、私の MV* 構造には次のものがあります。
/models
customer.class.php
order.class.php
/controllers
customer.controller.php
order.controller.php
/views
...
実際のクラスでは、
class CustomerController {}
class OrderController{}
class CustomerModel{}
class OrderModel{}
私は名前と一致させようとしていました。クラス名の接尾辞 (Controller、Model) を付けないと、再宣言しているため、クラスをロードできません。
クラスの名前をそのままにしておくと、autoload は次の名前のクラス ファイルを探すため、失敗します。
CustomerController
ファイル名が実際の場合、
customer.controller.php
私の唯一の方法は(順不同):
- create_aliasを使用する
- ファイルの名前を変更します (customer.model.php から customermodel.php に)
- クラスの名前を変更する
- 正規表現を使用する
- インクルード ファイル ( 、 など) でブートストラップを
include
使用require_once
する
?
サンプルコード、
function model_autoloader($class) {
include MODEL_PATH . $class . '.model.php';
}
spl_autoload_register('model_autoloader');
ファイルの名前を変更する必要があるようですが、
http://www.php-fig.org/psr/psr-4/
「終了クラス名は、.php で終わるファイル名に対応します。ファイル名は、終了クラス名の大文字と小文字を一致させる必要があります。」