我有许多旧类,我想转换到PSR-0样式目录。我想对我的过程进行健全检查。
FooPerson.class.php
文件重命名并重新定位到Foo/Person.php
。namespace Foo
中创建Person.php
,并根据需要将所有类引用更新为名称空间兼容。为了与旧代码兼容,请使用以下内容创建新的FooPerson.class.php
:
<?php
require 'autoload.php'; // our psr-0 autoloader
class_alias( '\Foo\Person', 'FooPerson' );
我希望这将使用new FooPerson
或new \Foo\Person
启用透明实例化。初步测试似乎支持这一点。我应该注意哪些陷阱?
答案 0 :(得分:4)
我没有看到任何陷阱。但是,我建议使用另一种方法,因为这可能会让你错过一个或另一个旧的类名。你可以完全删除FooPerson
,在这种情况下,你会发现困难的方法,忘记更改类名,或者创建一个虚拟类,这可以帮助你在有人试图使用时跟踪消息。 / p>
// File 'FooPerson.php'
trigger_error("Class 'FooPerson'", E_USER_DEPRECATED);
class FooPerson extends \Foo\Person {}
因为类到文件名映射根据psr-0标准有效,所以此文件也会被自动加载器加载。如果 由自动加载器加载,则会发出E_USER_DEPRECATED
,您可以修复它。