我知道有时候人们在声明类的实例对象时会使用括号,有时候则不会。
如果我先声明一个没有参数的类,然后扩展它以添加参数,那么初始类是否需要使用括号?
此外,我可以创建一个带有括号但没有特定参数或引用变量声明的类吗?像这样:
$myObject = clone ClassName();
然后再为类使用参数...
class User($param, $param2)
或者类根本不使用参数吗?我不确定,因为我的书中没有介绍带有参数的类的示例...
我知道有时候人们在声明类的实例对象时会使用括号,有时候则不会。
如果我先声明一个没有参数的类,然后扩展它以添加参数,那么初始类是否需要使用括号?
此外,我可以创建一个带有括号但没有特定参数或引用变量声明的类吗?像这样:
$myObject = clone ClassName();
然后再为类使用参数...
class User($param, $param2)
或者类根本不使用参数吗?我不确定,因为我的书中没有介绍带有参数的类的示例...
首先,我假设你的意思是使用 new
而不是 clone
。PHP 在创建一个类时不需要使用括号。
class Foo { }
$foo = new Foo;
$foo = new Foo();
两种都是有效的。
您发送的任何参数都将传递给__construct
函数。如果存在该函数,则在创建对象时自动调用该函数。
class Foo
{
public function __construct($n)
{
echo "Hello, $n\n";
}
}
$foo = new Foo("World!");
这将输出:
Hello, World!
如果构造函数需要参数,则如果您不发送任何参数,那么这是一个错误(警告)。__construct
不需要具有参数。可以有一个没有任何参数的构造函数,只是执行某些操作是有效的。$myObject = new ClassAwesome($param1, $param2);
不符合类声明,而是与构造函数相关。以下是一个示例:
//this is how you declare a class, there will not be a parenthesis here
class ClassAwesome {
//here is where the parameters are used when you instantiate a class
public function __construct($param1, $param2) {
//init code goes here
}
}
基本上,你不会看到带有参数的类声明是因为它们不存在,类构造函数是参数的位置。
$foo = new Foo;
和$foo = new Foo();
有什么区别吗? - Nasik Shafeek