PHP:$ myObject = new ClassName(); vs newClassName;

Wol*_*'08 1 php variables parameters arguments class

所以,我理解有时人们会使用parens,有时他们在将类的实例声明为对象时却不会.

如果我声明一个没有参数的类然后将其扩展为有参数,那么初始类是否需要有parens?

此外,我可以有一个带括号的类,没有特定的参数或引用变量声明,如下所示:

$ myObject = clone ClassName();

然后使用类的参数....

class User($ param,$ param2)

或者甚至使用参数?我不太确定,因为没有一个类的例子在我的书中带参数....

Mat*_*hew 8

首先,我认为你的意思是new代替clone.PHP不要求您在创建类时使用括号.

class Foo { }

$foo = new Foo;
$foo = new Foo();
Run Code Online (Sandbox Code Playgroud)

两者都有效.

您发送的任何参数都将传递给该__construct函数.创建对象时会自动调用该函数(如果存在).

class Foo
{
  public function __construct($n)
  {
     echo "Hello, $n\n";
  }
}

$foo = new Foo("World!");
Run Code Online (Sandbox Code Playgroud)

这将输出:

Hello, World!
Run Code Online (Sandbox Code Playgroud)

如果构造函数接受参数,那么如果您不发送任何参数,则会出现错误(警告).

请注意,__construct不需要参数.有一个构造函数只是做一些没有任何参数的东西是有效的.