使用';。php';PHP类的扩展?

使用';。php';PHP类的扩展?,php,coding-style,php-5.3,Php,Coding Style,Php 5.3,为php类附加use'.class.php'扩展是常见的做法吗 在PHP.net上,这里有如下示例: // 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中的一

为php类附加use'.class.php'扩展是常见的做法吗

在PHP.net上,这里有如下示例:

// 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中的一种新特性,所以可能是吗

编辑:“功能”不是一个好词!也许我应该问问这是标准还是惯例


谢谢。

这主要用于确保它是自动加载程序的目标类文件,您通常有其他.php文件,如模板、脚本(如引导文件)或配置文件,这些文件都是.php文件,但决不能解释为类

对于包含类的php文件,绝对不需要使用.class.php扩展名。但它也不会破坏任何东西。

它不是一个功能,它只是一个你不时看到的惯例。是否遵循它是您和您的团队的选择

我个人的观点是,既然选择是武断的,而且这种特殊的风格和你们的观点相矛盾,你们应该通过考试,因为:

  • PSR-0的应用范围更广,所以在所有其他条件相同的情况下,它将是一个更好的约定
  • 遵循“.class.php”样式意味着不能使用符合PSR-0的自动加载器(网上有很多)并且在没有修改的情况下使用它

这一切都是为了更好地理解这些文件的全部内容。因此,当您看到filename.class.php时,您知道,这个文件包含类filename。

如果您将类命名为“class.php”,则不会触发任何类型的特殊语言支持;这只是一个惯例,比如是否使用空格或制表符进行缩进


在我参与的一个项目中,类名为*.inc.php,模板名为*.tpl.php。

如果我大约在1999年编写php,这将是一个很好的惯例。您可以随意命名文件,但我建议您仅以文件中的类名命名,并附加“.php”。

这更多是个人偏好,但我实际上可能会研究一些标准,这些标准为您命名和命名类提供了一种标准方法,以更好地兼容相同格式的其他人的代码

在PSR-0标准中,PHP文件以类命名,并放入与名称空间相关的文件夹中


我建议在php.net手册中提到的
.class.php
方法上采用这种方法。

这不是一种功能,它只是一种非常简单实用的方法,可以使代码保持条理,更重要的是,避免自动加载问题

假设您有一个名为
User
的类,并且您的站点有一个由脚本生成的页面:
User.php
。如果需要
User
类的实例,将调用autoloader函数,并获取
User
作为参数。在查找一个名为
User.php
的文件时,可能会包含一个文件,而不是类定义。这就是为什么您可以(并且应该)在类的名称中增加一点类定义。然后,您可以编写自动加载器来查找
[[classname]].class.php
,巧妙地避开
User.php
文件


这是它的底线。当然,也要考虑名字空间,最重要的是让你的代码组织起来的最现代方式:目录(<代码> StIsIsPixDePosie)/P>这是惯例,而不是特征。你可以随意调用你的文件。例如,添加一个
.blah.which
扩展名或根本不添加扩展名都是非常有效的。建议至少使用
.php
,因为这有助于确保用户直接导航到文件的URL时,代码在服务器端进行评估,而不是作为纯文本提供。除了一些控制器配置之外,现在不是大多数php文件类。@user247245:不,不是“大多数php”。只有在项目是使用OOP完成的情况下才可以。问题并不意味着这是一项功能——当他说“这是一项新功能”时,他通常指的是类。@PWhite:PHP拥有类的时间比我记忆中的要长——大概10年左右是对的——所以我不确定它们将如何成为一项新功能。我必须检查一下。不知道PHP5是2004年的。时间过得真快。@PWhite:更不用说他们也在PHP4了