2009-07-09 81 views
0

我使用具有所有变量名,函数等的第一个字母的驼峰案例。但类名是大写的。我应该使用:我应该为我的类使用构造函数名吗?

class Foo 
{ 
    function foo() 
    { 

    } 
} 

或:

class Foo 
{ 
    function Foo() 
    { 

    } 
} 

这是一个更好的惯例?我很困惑。

+4

这不是由语言决定的吗? – 2009-07-09 03:54:19

+0

是的,这取决于语言。有些强制执行它,有些对构造函数有不同的名称。 – 2009-07-09 03:55:24

+0

好点,我使用的PHP具有不区分大小写的函数名,因此这个问题 – 2009-07-09 03:56:14

回答

11

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

但是PHP 4现在是个新闻。几年来,PHP 5一直是事实上的版本。而PHP 5使用了一个常量构造函数名称__construct。无论班上有什么名字,总是这样。

class a 
{ 
    public function __construct() 
    {} 
} 

class b 
{ 
    public function __construct() 
    {} 
} 
5

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

2

尽管这是许多语言(如Java或C#)中的约定,但并非如此。

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

那么,我们在说什么语言?

好的,所以PHP。 PHP中的惯例是大写类名称

的Java还采用大写的类名,而是一个类中的方法是驼峰格式

当然C#,通过使用大写的类名与同为方法带来混乱。

1

许多语言不会给你一个选择。这包括C++,Java和C#。构造函数的名称是类的名称,所以当且仅当使用大写的类名称时,大写构造函数名称。 (如果不这样做,那么编译器无论如何都不会将其识别为构造函数)。

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

3

如果可能,我会去第二个例子。也就是说,构造函数的情况应该与类名匹配,因为构造函数正在返回类的实例,所以它应该被命名为相同的(为了一致性)。

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

但是,它是依赖于语言:

  • 一些语言是大小写敏感的,因此,他们迫使这种行为,就会因错误如果外壳不同。
  • 某些语言不区分大小写,不关心。
  • 我不确定,但有些语言可能会强制你以不同的方式命名构造函数(不知道编译器如何识别它作为构造函数,但那不是重点)。
6

老实说,也没有。

你应该使用__construct()除非你被链接到相当古老的PHP4,那么你完全匹配类的名称。

相关问题