機能が似ていることもあり、Zend_Loaderからspl_autoload_register()を操作することができます。
http://framework.zend.com/manual/1.11/ja/zend.loader.load.html
> Autoloader の使用法
> そのコールバックメソッドが Zend_Loader::autoload() です。
> 利便性を考慮して、 Zend_Loader では registerAutoload() 関数を提供しています。
って書いてあるんだけど実際registerAutoload()には
よってZend_Loader_Autoloaderを使ってみたいと思いますが、マニュアルが和訳されていないので手探りでやってみます。
今後、前回までのようにZend_Loader::loadClass($className)を書く必要はありません。
ただ何故かPearのクラスは適用範囲外になります。
setZfPath()はZendFrameworkのパスを指定します。
特徴的なのは第二引数を指定することで任意のバージョンをセットできるというところです。
過去バージョンでの動作確認などを簡単に行えます。
ただ何故かディレクトリ名の許容範囲がやたらと狭く、例のような引数を与えた場合、ディレクトリ名が
"C:\PEAR/ZendFramework-1.2.2/library"あるいは"C:\PEAR/1.2.2-minimal"のような形に勝手に決まってしまいます。
http://framework.zend.com/manual/1.11/ja/zend.loader.autoloader.html#zend.loader.autoloader.zf-version
任意のパスを登録することができません。
何故だ。
pushAutoloader()でオートロード用関数を登録します。
http://framework.zend.com/manual/1.11/ja/zend.loader.load.html#zend.loader.load.autoload
使い方は基本的にspl_autoload_register()と同じです。
どうもいまいち便利なのかよくわからないクラスだ。
普通に使う分にはspl_autoload_register()のほうが手っ取り早いので、あくまでsetZfPath()を使用しての開発用・動作検証用というスタンスのクラスではないかと思われます。
http://framework.zend.com/manual/1.11/ja/zend.loader.load.html
> Autoloader の使用法
> そのコールバックメソッドが Zend_Loader::autoload() です。
> 利便性を考慮して、 Zend_Loader では registerAutoload() 関数を提供しています。
って書いてあるんだけど実際registerAutoload()には
public static function registerAutoload($class = 'Zend_Loader', $enabled = true) trigger_error(__CLASS__ . '::' . __METHOD__ . ' is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead', E_USER_NOTICE); }って書いてあります。
よってZend_Loader_Autoloaderを使ってみたいと思いますが、マニュアルが和訳されていないので手探りでやってみます。
<?php //オートロード用関数 function autoload1($className){ class AutoLoad1{} } //Zend_Loader_Autoloader require_once('Zend/Loader/Autoloader.php'); $autoLoader = Zend_Loader_Autoloader::getInstance(); //ZFのパスをセット $autoLoader->setZfPath('C:\xampp\php\PEAR','1.2.2'); //NotFoundエラーの発生抑止 $autoLoader->suppressNotFoundWarnings(true); //pushAutoloader $autoLoader->pushAutoloader('autoload1'); //オートロード new Zend_Filter_Word_DashToSeparator('/'); new AutoLoad1();実はZend_Loader_Autoloader::getInstance()した時点でZendフレームワークについては自動的にオートロードが適用されます。
今後、前回までのようにZend_Loader::loadClass($className)を書く必要はありません。
ただ何故かPearのクラスは適用範囲外になります。
setZfPath()はZendFrameworkのパスを指定します。
特徴的なのは第二引数を指定することで任意のバージョンをセットできるというところです。
過去バージョンでの動作確認などを簡単に行えます。
ただ何故かディレクトリ名の許容範囲がやたらと狭く、例のような引数を与えた場合、ディレクトリ名が
"C:\PEAR/ZendFramework-1.2.2/library"あるいは"C:\PEAR/1.2.2-minimal"のような形に勝手に決まってしまいます。
http://framework.zend.com/manual/1.11/ja/zend.loader.autoloader.html#zend.loader.autoloader.zf-version
任意のパスを登録することができません。
何故だ。
pushAutoloader()でオートロード用関数を登録します。
http://framework.zend.com/manual/1.11/ja/zend.loader.load.html#zend.loader.load.autoload
使い方は基本的にspl_autoload_register()と同じです。
どうもいまいち便利なのかよくわからないクラスだ。
普通に使う分にはspl_autoload_register()のほうが手っ取り早いので、あくまでsetZfPath()を使用しての開発用・動作検証用というスタンスのクラスではないかと思われます。
PR
トラックバック
トラックバックURL: