4

我有一些较旧的类,我想将它们转换为PSR-0样式目录。我想对我的流程进行健全性检查。

  1. 将现有FooPerson.class.php文件重命名并重定位为Foo/Person.php.
  2. namespace Foo在 中创建Person.php,并根据需要更新所有类引用以与命名空间兼容。
  3. 为了与旧代码兼容,请FooPerson.class.php使用以下内容创建一个新代码:

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

我希望这将启用透明实例化使用new FooPersonnew \Foo\Person。初步测试似乎支持这一点。我应该注意哪些陷阱?

4

1 回答 1

4

我没有看到任何陷阱。但是,我建议使用另一种方法,因为这种方法可能会让您错过一个或另一个旧的类名。要么你完全删除FooPerson,在这种情况下你会意识到你忘记更改类名的困难方式,或者创建一个虚拟类,当有人试图使用它时,它可以帮助你跟踪消息。

// File 'FooPerson.php'

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

因为根据 psr-0 标准,类到文件名的映射是有效的,所以这个文件也会被你的自动加载器加载。如果它由自动加载器加载的,E_USER_DEPRECATED则会发出 a 并且您可以修复它。

于 2011-06-07T20:39:42.750 回答