4

PSR-0スタイルのディレクトリに移行したい古いクラスがいくつかあります。プロセスのサニティ チェックが必要です。

  1. 既存のFooPerson.class.phpファイルの名前を変更し、 Foo/Person.php.
  2. で作成namespace FooPerson.php、必要に応じてすべてのクラス参照を名前空間と互換性があるように更新します。
  3. 古いコードとの互換性のために、FooPerson.class.php次の内容で新しいコードを作成してください:

    <?php
    
    require 'autoload.php'; // our psr-0 autoloader
    class_alias( '\Foo\Person', 'FooPerson' );
    

new FooPersonこれにより、またはを使用した透過的なインスタンス化が可能になることを願っていますnew \Foo\Person。初期テストはこれをサポートしているようです。注意すべき落とし穴はありますか?

4

1 に答える 1

4

落とし穴は見当たりません。ただし、別のアプローチを使用することをお勧めします。これは、古いクラス名を見逃してしまう可能性があるためです。完全に削除するかFooPerson、クラス名を変更するのを忘れたという難しい方法に気付くか、誰かがそれを使おうとしたときにメッセージを追跡するのに役立つダミークラスを作成します。

// File 'FooPerson.php'

trigger_error("Class 'FooPerson'", E_USER_DEPRECATED);
class FooPerson extends \Foo\Person {}

class-to-filename-mappingはpsr-0標準に従って有効であるため、このファイルはオートローダーによってもロードされます。オートローダーによってロードされた場合、aE_USER_DEPRECATEDが発行され、修正できます。

于 2011-06-07T20:39:42.750 に答える