我是 PHP OOP 编程方面的新手,我不明白以下类名何时以及如何使用以及何时使用它们:
$a = new Classname();
$a = new Classname;
$a = ClassName::function();
$a = ClassName::getInstance();
非常感谢和抱歉愚蠢的问题:
这些是相同的。
$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;
至于
$a = new Classname();
$a = new Classname;
__construct()
如果没有要接收的参数,则没有区别。
至于
$a = ClassName::function();
$a = ClassName::getInstance();
这只是静态方法的正常调用
为了:
$a = new Classname();
$a = new Classname;
这些只是表达同一件事的 2 种不同方式: 创建一个不带任何参数的对类“Classname”的新引用(php 在 if () 方面更宽松,并且必须提供或不提供参数比许多其他编程语言)。
为了:
$a = ClassName::function();
$a = ClassName::getInstance();
这两个是函数“function()”和“getInstance()”的静态调用,因此 $a 将被设置为这些函数的适当返回值。静态意味着您可以在不引用类本身的情况下使用这些函数(因此不需要 $b=ClassName(); $a=$b->function() 而是您可以像上面那样编写它)。