问题描述
|
因此,我了解到有时人们在将类的实例声明为对象时使用parens,有时却不使用parens。
如果我声明一个没有参数的类,然后将其扩展为具有参数,那么初始类是否需要具有parens?
此外,我是否可以使用带有方括号且没有特定参数或引用变量声明的类,如下所示:
$ myObject =克隆ClassName();
然后为类使用参数。
类User($ param,$ param2)
还是类甚至使用过参数?我不太确定,因为在我的书中没有带参数的类的例子。
解决方法
这些参数,例如
$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
}
}
因此,基本上,您看不到带有参数的类声明的原因是因为它们不存在,所以类构造函数是参数所在的位置。
, 首先,我假设您的意思是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
不需要参数。具有仅执行不带任何参数的操作的构造函数是有效的。