使用命名空间重定位和重命名类

时间:2011-06-07 20:26:07

标签: php namespaces psr-0

我有许多旧类,我想转换到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' );
    
  4. 我希望这将使用new FooPersonnew \Foo\Person启用透明实例化。初步测试似乎支持这一点。我应该注意哪些陷阱?

1 个答案:

答案 0 :(得分:4)

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

// File 'FooPerson.php'

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

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