2017-06-21 13 views
0

私は現在、初めから成長しており、約1800のPHPファイルを持っているPHPプロジェクトの学生として働いています。PHPの名前空間への変換

問題は、完全に名前空間がないか、PSR-4などの推奨事項のいずれかです。技術的な借金はこれで強くなります:)。

私たちは、作曲家(と小枝やいくつかの図書館)を使い、これを含む問題がある(特に作曲家)ことを望みます。私はそれがcomposer-autoloaderのspl_autoload_register()経由で__autoload()の上書きのためだと思いますか?

プロジェクト全体を書き直すことなく、名前空間の統合を開始する方法はありますか?

+0

PSR-4はありませんか?このプロジェクトは古代のものでなければなりません。そこで、私はあなたのためのいくつかのリソースを見つけました(**ここ**)(https://jtreminio.com/2012/10/composer-namespaces-in-5-minutes/)と[**ここ**](https ://stackoverflow.com/questions/31504980/php-adding-custom-namespace-using-autoloader-from-composer)。私は作曲家を使ってから年を経ているので、あまりにも助けなければ私を許してください。 –

+2

名前空間はコンポーザやオートローディングとあまり関係がありません。それらはすべて直交の概念です。 – deceze

+1

Composerは、PSR-0を扱うことも、自動ロードするファイルやフォルダを手動で指定することもできます。既存のオートローダーを取り除き、作曲家に自分のことをさせるだけで安全です。 https://getcomposer.org/doc/04-schema.md#autoload – apokryfos

答えて

0

PSR-0またはclassmapを使用してComposerを引き続き使用できます。

私はおそらく最初にクラスマップに行きます。利点:ファイルごとに複数のクラスを扱うことができます。任意のファイル構造を扱うことができます。

Composerのオートローディングを使用すると、既存のオートローダーまたはrequire_once/include_onceのいずれかがどこかに広がっている可能性があります。

レガシーファイルをすべて削除し、Composerの自動ロードを確立したら、PSR-0に従ってコードを整理することができます。これはおそらくファイルの名前を変更し、それらの位置を変更する必要があります。また、これらのファイルがすべて1つのフォルダに属しているため、クラスに識別可能なプレフィックスがない場合もあります。これはPSR-0オートローディングには悪いことです。

この時点までは、クラスの名前を変更していないので、コードを変更せずに実行する必要があります。

名前空間を使用しても、大きな利点はありません。すべてのクラスの名前を変更し、そのクラス名のすべての名前を変更する必要があります。すべて単独で使用すると目に見える利点はありません。

一方、他のものもリファクタリングしたいと思うように聞こえるので、名前空間に切り替えることは、「新しい」コードの信号として使用できます。

PSR-4とPSR-0は同時に使用できますので、クラス名の変更には影響しません(すべての場所で必要なクラス名の変更に加えて)。

+0

ありがとうございます。私は上記のリンクを試してみるでしょう(他の人は答えて、あなたの推薦を念頭に置いています:)。特に私/私たちはPSR-4/0を同時に使うことができます。 – neulaender

関連する問題