といっても対した内容ではないですが。
FuelPHPではオートローダによって自作したクラスとかも自動的にロードされるようになっています。
ただし、これには規約があって
・ファイル名とフォルダ名はすべて小文字
・クラス名の中のアンダースコア(_)はフォルダ区切り
というのがあります。
たとえば「fuel/app/classes」に以下のようなディレクトリ構成でfoo.phpを作成した場合
classes
└ libs
└ foo.php
<?php class Libs_Foo { function hoge() { } }
こんなかんじで実際に使用する場合は
<?php $foo = new Libs_Foo(); $foo->hoge();
これでOK。
フレームワークを使っていない場合でも
<?php define('MY_CLASS_PATH', 'classes/'); // autoload function __autoload($className) { $className = ltrim($className, '\\'); $fileName = ''; $namespace = ''; if ($lastNsPos = strripos($className, '\\')) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace); } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; require MY_CLASS_PATH . $fileName; }
PSR-0のページに載ってある例をそのままですが
こんなかんじでオートローダを実装しておけば同じようなことができます。
また、SplClassLoaderというのがあって
https://gist.github.com/221634
これが推奨されているものみたいです。
※
オートローダを使った場合、requireなのかinlucdeなのか、require_onceなのかinlucde_onceなのか。。。
どっちが一般的なんだろう。。。
FuelPHPはrequireみたいなんだけどrequireする前にfile_existsをしているからそれでもいいのかな。
0 件のコメント:
コメントを投稿