![](/img/trans.png)
[英]How To Make Composer (PSR-4) To Work With ".class.php" Extension?
[英]Use '.class.php' extension for PHP classes?
通常的做法是为PHP类添加'.class.php'扩展名吗?
在PHP.net上: http : //php.net/manual/en/function.spl-autoload-register.php有一些这样的例子:
// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
它使用.class.php
扩展名。
PHP代码应该像这样编写吗? 我以前从未见过它,它是新的吗? 这是PHP中的一种新功能,也许它是?
编辑 :'功能'不是一个好词! 也许我应该问这是一些标准还是惯例。
谢谢。
这不是一个功能,它只是一个你不时会出现的惯例。 是否遵循它是您和您的团队的选择。
我个人的意见是,由于选择是任意的,这种特殊的风格与PSR-0自动加载器规范相矛盾,你应该通过,因为:
这主要用于确保自动加载器所针对的类文件,您经常有其他.php文件,如模板,脚本,如bootstrapping或配置文件,它们是.php文件,但绝不应该被解释为类
这不是一个功能,它只是一种非常简单,实用的方法来保持您的代码组织,更重要的是,避免自动加载的问题。
假设您有一个名为User
类,并且您的站点有一个页面,该页面由脚本生成: User.php
。 如果需要User
类的实例,将调用自动加载器函数,并将User
作为参数。 在查找名为User.php
的文件时,您可能包含一个文件,而不是类定义。 这就是为什么你可以(并且应该)在他们的名字中给出一些额外的类定义。 然后你可以编写自动加载器来查找[[class name]].class.php
,整齐地避开User.php
文件。
这是它的底线。 当然 - 还要考虑名称空间,以及保持代码组织的最现代的方式:目录( set_include_path
)
对于包含类的php文件,使用.class.php扩展名绝对不是必需的。 但它也不会破坏任何东西。
这是为了更好地理解这些文件的全部内容。 所以,当你看到filename.class.php时,你知道,这个文件包含类文件名。
如果您将类命名为class.php,则不会触发任何特殊语言支持; 它只是一个约定,比如你是否使用空格或制表符进行缩进。
在我工作的一个项目中,名为* .inc.php和templates * .tpl.php的类。
如果我在大约1999年编写PHP,这将是一个很好的惯例。 您可以根据需要命名文件,但我建议只在文件中的类名后面命名,并附加“.php”。
这更多是个人偏好,但我实际上可能会研究PSR-0标准,它为您提供了一种标准方法,可以为您的类命名和命名空间,以便以相同的格式提供与其他人代码的更好兼容性。
在PSR-0标准中,PHP文件以类命名,并放入与命名空间相关的文件夹中。
我建议在PHP.net手册中提到的.class.php
方法中采用这种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.