1

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

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

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

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

4

3 回答 3

10

这些是相同的。

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

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

例子:

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

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

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


这些都是静态方法调用。

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

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

无需创建对象实例即可调用静态方法。

IE

Classname::staticMethod();

相对

$obj = new Classname;
$obj->method;
于 2012-08-02T11:07:21.267 回答
4

至于

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

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


至于

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

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

于 2012-08-02T11:06:10.073 回答
1

为了:

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

这些只是表达同一件事的 2 种不同方式: 创建一个不带任何参数的对类“Classname”的新引用(php 在 if () 方面更宽松,并且必须提供或不提供参数比许多其他编程语言)。

为了:

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

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

于 2012-08-02T11:11:32.543 回答