我应该为我的类大写构造函数名称吗?

时间:2009-07-09 03:51:55

标签: php naming-conventions

我使用camel case,它的所有变量名,函数等的首字母都是小写的。但是班级名称是大写的。我应该使用:

class Foo
{
   function foo()
   {

   }   
}

或:

class Foo
{
   function Foo()
   {

   }   
}

哪个更好的约定?我很困惑。

6 个答案:

答案 0 :(得分:11)

命名构造函数是PHP 4约定。是的,当你这样做时,你应该匹配班级的情况。

但是这些天PHP 4是个新闻。 PHP 5几年来一直是事实上的版本。 PHP 5使用常量构造函数名称__construct。无论班级名称如何,总会如此。

class a
{
  public function __construct()
  {}
}

class b
{
  public function __construct()
  {}
}

答案 1 :(得分:6)

老实说,不是。

你应该使用__construct()当然,除非你被链接到相当古老的PHP4,否则你就完全匹配了这个类的名字。

答案 2 :(得分:5)

构造函数名称应与类名匹配,因此Foo。这是惯例,不仅在PHP中,而且在它复制的语言中:Java,C#和C ++。在这些语言中,标识符区分大小写,因此名称​​必须相同。

答案 3 :(得分:3)

如果可能的话,我会选择第二个例子。也就是说,构造函数的大小写应该与类名匹配,因为构造函数正在返回类的实例,因此它的名称应该相同(为了保持一致性)。

这可能是个人约定,但如果我有一个类“FooBarBaz”,我希望构造函数名为“FooBarBaz”,而不是“fOOBARBAZ”,“fooBarBaz”,“foobarbaz”或其他任何东西。

但是,它依赖于语言:

  • 某些语言区分大小写,因此它们强制执行此行为,如果大小写不同,则会出错。
  • 有些语言不区分大小写,不关心。
  • 我不确定,但有些语言可能会强迫您以不同的方式命名构造函数(不确定编译器如何将其识别为构造函数,但这不是重点)。

答案 4 :(得分:2)

虽然这是许多语言的惯例,例如Java或C#,但并非如此。

大写取决于开发环境中的语言或类库约定。

那么,我们在谈论什么语言?

好的,所以 PHP 。 PHP中的约定是大写类名

Java 还使用大写类名称,但类中的方法是 camelCased

C#当然,使用大写类名称会混淆一些事情,而方法则相同。

答案 5 :(得分:1)

许多语言都没有给你一个选择。这包括C ++,Java和C#。构造函数的名称是类的名称,因此当且仅当您将类名称大写时,才将大写构造函数名称大写。 (如果不这样做,那么编译器甚至都不会将它识别为构造函数。)

对于其他语言,请使用与该类其余方法相同的命名约定。就是这么简单。