質問

php.net から:

  

PHP 5では、これはもう必要ありません。 __ autoload() を定義できます。まだ定義されていないクラス/インターフェイスを使用しようとしている場合に自動的に呼び出される関数。この関数を呼び出すことで、PHPがエラーで失敗する前に、スクリプトエンジンにクラスをロードする最後の機会が与えられます。

知りたいのですが、動的サイトに適切なクラスをロードするために __ autoload を単独で使用するのは悪い習慣ですか?

私のサイトのセットアップ方法は、 index.php ファイルにファイルを含めることです。たとえば、 http://www.site.com/index.php?p=PAGE-I-WANT-TO-LOAD

したがって、サイトのフォーラムセクションまたはブログセクションにいる場合は、適切なクラスと関数のみをロードする必要があるため、autoloadを使用しますが、 __ autoloadを使用する場合、手動でファイルを含めることはありません最後の手段として、またはトラフィックの多いシステムでもうまくやっていることですか?

役に立ちましたか?

解決

悪い?いいえ。 __ autoload()は、私のお気に入りのPHP 5への追加の1つです。これにより、アプリケーションに必要なクラスファイルを手動で含めたり、必要としたりする責任(および煩わしさ)がなくなります。そうは言っても、「適切なクラス」のみがロードされるようにするのは開発者の責任です。これは、構造化された命名スキームとディレクトリ構造を使用して簡単に実行できます。 __autoload()を適切に使用し、Google検索を実行する方法のオンライン例がたくさんあります。多くの情報が見つかります。

他のヒント

オートロードは、必要なクラスのみをロードする良い方法です。

PHP 5> = 5.1.2では、 spl_autoload_register()

  

知りたいのですが、動的サイトで適切なクラスをロードするために__autoloadのみを使用するのは悪い習慣ですか?

まったくありません。オートロードに頼ることができます、あなたがする必要があるのは、良い命名規則を考案し、効率的なオートローダーを実装することです。

考慮すべき大きな問題が1つあります。 Zend Guardは名前を変更する傾向があるため、オートロードとZend Guardはうまく機能しません。つまり、使用することを決めた命名規則はほとんど同じではないことを意味します。 Zend Guard(または他の難読化ツール)を使用する場合、ほとんどの場合、すべてのファイルを手動で含める必要があります。

Zend Guardユーザーガイドからの引用:

  

ディスク上のファイル名が機能しないため、クラスの自動ロードは機能しません   難読化されたクラス名と一致します。

__ autoload()の唯一の危険は、貧弱な自動ロード関数を定義した場合です。一般に、パフォーマンスヒットに関して得られるのは、PHPがクラスを含む適切なファイルを検索するためのディスクシークです。欠点は、これらの迷惑な include()呼び出しをすべて取り除くことです。

このレベルでのパフォーマンスが心配な場合は、APCなどのオペコードキャッシュを既に使用している必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top