私はPHP 4以降私のコードライブラリの構築を開始しました。私はrequire_once
を使ってクラスをインポートしました。 PHP 5.3では、名前空間を定義してそれらをインポートすることができました。名前空間のインポートとPHPのファイルの組み合せ
require_once
の代わりにインポート(use
文)を使用するようにソースファイルを変更したいと思います。これは正しい決断ですか、わかりません。
私はそれが簡単だろうと思います。クラスファイルの先頭に名前空間を定義し、検索を実行すると、&はそれらを使用する他のファイルに置き換えられます(require_once
をuse
に置き換えます)。実際に何がうまくいかないでしょうか?
パフォーマンスの向上はありますか?ファイルをインクルードすると、PHPがそのファイルをどのように見つけ出すのかが明白です。しかし、名前空間をインポートするとそれほど明白ではありません。名前空間を検索してPHPでインデックスを作成すると、パフォーマンスが低下しますか?
ありがとうございました、私は自動クラスの読み込みに気付かなかった。しかし、それは通訳の言語でしか実装できない悪い習慣のように聞こえる。これは、クラス全体のパスを検索するようなオーバーヘッドを追加し、どのファイルが何を使用しているかわからない不適切なドキュメントにつながります。 – bkilinc
自動クラスロードのため、パフォーマンス上の問題はありませんでした。上記のツールを使用すると、ルックアップが高速であることを確認するために多くの作業が行われることがわかります。結局のところ、Javaはこれを10年以上にわたって成功させています。最後に重要なことですが、インクルード/クラスローディングの単純なルールに依拠すれば、コードが大幅に単純化されます。 – BetaRide
@bkilinc:PSR-0のような標準では、アプリケーション全体のオートローディングに一貫性のあるルールを使用できます。ライブラリ全体で同じ標準が適用される場合は、アプリケーション全体に対して1つのオートローダーを使用できます。これにより、パフォーマンスのオーバーヘッドを最小限に抑えながら、依存関係を気にせずに非常にモジュラーなOOPコードを書くことができます。 –