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