我是PHP OOP编程的新手,我不明白以下类名的时间和方式以及何时使用它们:
$a = new Classname();
$a = new Classname;
$a = ClassName::function();
$a = ClassName::getInstance();
非常感谢和抱歉愚蠢的问题:
答案 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->函数()不需要你可以像上面那样编写它。)