忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/08/24 04:35 |
ZF1.11 Zend_Loaderでオートローダー
機能が似ていることもあり、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()には
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


2011/09/12 23:41 | Comments(0) | TrackBack(0) | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ZF1.11 Zend_Db_SelectのorWhere()の例がどうかしてる件 | HOME | 買ったものリスト 2011/09/11>>
忍者ブログ[PR]