所以,我知道在将类的实例声明为对象时,有时人们使用parens,有时他们不使用parens。
如果我声明一个没有参数的类,然后将其扩展为有参数,那么初始类是否需要有parens?
此外,我是否可以有一个带括号的类,并且没有像下面这样的特定参数或引用变量声明:
$myObject=克隆类名();
然后使用类的参数。。。。
类用户($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
}
}
所以基本上,你看不到带参数的类声明的原因是因为它们不存在,类构造函数就是参数所在的地方。