PHP5以前では、各PHPフレームワークがクラスの自動ローディングを実装したい場合、通常、ディレクトリを横断し、特定の取り決めに従って合意されたルールに適合するすべてのファイルを自動的にロードするクラスを実装していました。 . または関数。 もちろん、PHP5 より前のオブジェクト指向のサポートはあまり良くなく、クラスの使用は現在ほど頻繁ではありませんでした。 これについて詳しく説明しましょう。
PHPクラスの自動ロード方法
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
クラスの読み込み { /** * クラスは自動的にロードされるため、開発者が呼び出す必要はありません * * @param string $class クラス ファイル */ プライベート関数 autoload( $class ) { if( 空($class) ) { throw new QException('ロードされたファイルが存在しません'.$class); } その他 { require _SPRING_.'/_Core/SpringMap.php' //フレームマップ ;if(! file_exists( $source[$class]['file'] ) ) { throw new QException('ロードされたファイルが存在しません'.$class); } $source[$class]['file']; が必要です} }
/** * 自動クラスロードメソッドを登録または登録解除します * * このメソッドは Zend Framework を参照しています * * @param string $class 自動読み込みサービスを提供するクラス * @param boolean $enabled サービスを有効または無効にします */ プライベート関数 registerAutoload($class = 'Interpreter' , $enabled = true) { if (!function_exists('spl_autoload_register')) { throw new QException('この PHP インストールには spl_autoload が存在しません'); } if ($enabled === true) { spl_autoload_register(array($class, 'autoload')); } その他 { spl_autoload_unregister(array($class, 'autoload')); } }
/** * デストラクター */ パブリック関数 __destruct() { self::registerAutoload('Interpreter' , false); } |
以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。