php类名,有什么区别

时间:2012-08-02 11:04:26

标签: php oop class

我是PHP OOP编程的新手,我不明白以下类名的时间和方式以及何时使用它们:

$a = new Classname();
$a = new Classname;

$a = ClassName::function();
$a = ClassName::getInstance();

非常感谢和抱歉愚蠢的问题:

3 个答案:

答案 0 :(得分:10)

这些是相同的。

$a = new Classname();
$a = new Classname;

当类构造函数不接受或不需要其他参数时,您可以互换使用它们。

示例:

class Classname
{
    public function __construct($var = null)
    {
        // ..
    }

    static public function getInstance()
    {
        // ..
    }
}

在这种情况下,您可以使用$a = new Classname;$var将采用默认值,或$a = new Classname('hello')$var将等于传递的值。


这些都是static方法调用。

$a = ClassName::function();
$a = ClassName::getInstance();

一个调用一个名为“function”的方法(它不能存在 - 它是一个保留字),另一个调用名为“getInstance”的方法。当你使用它们时,实际上取决于方法的作用。

可以在不创建对象实例的情况下调用静态方法。

Classname::staticMethod();

$obj = new Classname;
$obj->method;

答案 1 :(得分:4)

至于

$a = new Classname(); 
$a = new Classname;

如果__construct()没有要接收的参数,则没有区别。


至于

$a = ClassName::function();
$a = ClassName::getInstance();

这只是静态方法的正常调用

答案 2 :(得分:1)

有关:

$a = new Classname();
$a = new Classname;

这只是两种不同的方式来说同样的事情:创建一个没有任何参数的类“Classname”的新引用(php在if()方面更宽松,并且必须给出参数,而不是许多其他编程语言)。

有关:

$a = ClassName::function();
$a = ClassName::getInstance();

这两个是函数“function()”和“getInstance()”的静态调用,因此$ a将被设置为这些函数的适当返回值。静态意味着你可以使用 函数没有引用类本身(因此$ b = ClassName(); $ a = $ b->函数()不需要你可以像上面那样编写它。)