最近、OO を使用して PHP アプリケーションのモデル コードを書き直しています。クラスを完成させ、名前空間を含めました (Project\Level1\Level2 などの形式で)。これはビルド済みのアプリケーションであるため、多くのクラスがあります。クラスを簡単にロードできるように、オートローダーを使用しています。しかし、ここで厄介な問題が発生します。
アプリケーション全体におそらく 300 ページが散らばっており、そのすべてが最初に PHP ファイル (一種のブートストラップ スクリプト) を必要とします。そのブートストラップ ファイルには、オートローダー スクリプトが必要です。
これで、ほとんどのページで少なくとも 1 つ、おそらく多くのクラスが使用されます。ここには 2 つのオプションがあることがわかっています。
//either call the classes using qualified names
$person = new Project\Person;
//or include the "use" keyword on every page, so we can alias the classes for ease of use
use Project\Person as Person;
$person = new Person;
しかし面倒なことは、アプリケーションのすべてのページでこれを行う必要はありません。
require_once('../php/bootstrap.php');
use Project\Person\ as Person,
Project\Address\ as Address,
Project\Group\ as Group
Project\CustomField\ as CustomField;
$person = new Person;
$address = new Address;
念のため、ブートストラップ ファイルにすべてのクラスの use キーワードを含めてみましたが、PHP のマニュアルによると、「インポート ルールはファイル単位であり、インクルード ファイルは親ファイルのインポート ルールを継承しないことを意味します。」
アプリケーションのすべてのページにこれらの広大な use ステートメントを含めることは、価値がある以上に手間がかかるように思えます。1 ページで 15 クラスを使用している場合はどうなるでしょうか。その場合、使用ステートメントは巨大になります。
私の質問はこれです:それは面倒すぎますか?名前空間の使用は正しいですか、それとも PHP ではそれほど役に立ちませんか? そして、私たちがやろうとしていることを知った今、私たちはそれを正しく行っていますか? 欠けているものはありますか?常に完全修飾名でクラスを呼び出す必要がありますか?
(これはstackoverflowに関する私の最初の質問です。今後、質問に対して何か違うことやより良いことをする必要がある場合はお知らせください)