私はファイルのリストを持っています、そこでファイルは同じディレクトリの別のファイルを継承しています。ディレクトリのすべてのファイルを含めたいのですが、エラーが発生しないように、継承順にどのように行うのですか?
3 に答える
依存関係を自分で計算する代わりに、を使用して自動読み込みを使用することもできますspl_autoload_register()
。
このようにして、依存関係は必要に応じて解決されます。「ジャストインタイム」の読み込みに少し似ています:)
ファイルが他のファイルに特定の依存関係を持っている場合は、最初に「親」ファイルを含めるようにしてください。
たとえば、ファイルA.phpにクラスAがあります。
<?php
class A {
// .. statements
}
そして、B.phpという名前のAを拡張するクラスBがあります。
<?php
require_once( "A.php" );
class B extends A {
// .. statements
}
アイデアは、そのファイルで関数/クラス/ステートメントを使用する前に、最初に必要なファイルを「含める」/「必要とする」ことです。PHP 5では、require関数を常に入力しなくても、必要なファイルを「自動的に」追加/インクルードする自動ロード関数を使用できます。
パーサーを使用して依存関係を確認することはできますが、これは非常に多くの作業と実際のパフォーマンスキラーになります。
ファイルを並べ替えて、番号をプレフィックスとして付けることができます
001.init.php
002.db_connect.php
003.pre_filters.php
ただし、手動で並べ替える場合は、ファイル名に依存するのはかなり無意味です。
クラス継承がある場合は、オートローダーを組み合わせて1回要求することができます。require_onceを使用してファイルを要求するカスタムオートローダーを登録し、すべてのファイルをループに含めます。4番目のファイルの8番目のファイルのクラスが必要な場合、オートローダーは事前に8番目のファイルをロードし、inludeループが8番目のファイルに到達しても、require_onceはファイルを再度インクルードしないため、何も起こりません。
しかし、すでにお気づきかもしれませんが、ファイルシステムからランダムな順序で相互に依存しているファイルを含めることはお勧めできません。