といっても対した内容ではないですが。
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 件のコメント:
コメントを投稿