ってタイトルを書いたはいいけど__autoload()はメソッドではなく関数です。
http://php.net/manual/ja/language.oop5.autoload.php
適当なクラスを呼び出したが、そのクラスが存在しない場合に自動的に呼び出される関数です。
Fatal error: Class 'Zend_Filter_Word_DashToSeparator' not found.
のエラーが発生しますが、関数__autoload()があった場合はその直前に呼び出されます。
この関数内でどうにかしてZend_Filter_Word_DashToSeparatorをインクルードすることができれば、エラーが発生することなく続きの処理を行うことができます。
関数__autoload()を通ってもクラスが見つからなかった場合には、普段のとおりFatal errorが発生します。
今回はZend_Loader::loadClass()で手っ取り早く実装しました。
たったこれだけでPearやZendクラスを使用する際にrequire_once()を並べる必要が一切なくなります。
もちろんPearライブラリにインクルードパスが通っている必要はありますが。
http://php.net/manual/ja/language.oop5.autoload.php
適当なクラスを呼び出したが、そのクラスが存在しない場合に自動的に呼び出される関数です。
<?php //__autoloadをセット function __autoload($className){ require_once('Zend/Loader.php'); try{ @Zend_Loader::loadClass($className); }catch(Exception $e){} } //インクルードしていないクラスをインスタンス化 new Zend_Filter_Word_DashToSeparator('/');インクルードされていないクラスZend_Filter_Word_DashToSeparatorを呼び出した際、通常であれば
Fatal error: Class 'Zend_Filter_Word_DashToSeparator' not found.
のエラーが発生しますが、関数__autoload()があった場合はその直前に呼び出されます。
この関数内でどうにかしてZend_Filter_Word_DashToSeparatorをインクルードすることができれば、エラーが発生することなく続きの処理を行うことができます。
関数__autoload()を通ってもクラスが見つからなかった場合には、普段のとおりFatal errorが発生します。
今回はZend_Loader::loadClass()で手っ取り早く実装しました。
たったこれだけでPearやZendクラスを使用する際にrequire_once()を並べる必要が一切なくなります。
もちろんPearライブラリにインクルードパスが通っている必要はありますが。
PR
トラックバック
トラックバックURL: