这两种初始化PHP类的方法有什么区别?

Ibr*_*mar 3 php class

我想知道这两种初始化类对象的方法之间的区别

方法1(使用范围解析运算符):

Test::foo();
Run Code Online (Sandbox Code Playgroud)

方法2(创建对象的实例):

$test = new Test;
$test->foo();
Run Code Online (Sandbox Code Playgroud)

这个->运营商叫什么?

dec*_*eze 8

Test::foo()只是静态地调用类的方法,它不对对象做任何事情.它可能会初始化类中的静态值,但通常不使用静态初始值设定项.在Singletons的情况下,可以在内部使用静态初始化程序,但是你永远不应该像这样调用公共静态初始化程序.

$test = new Test实际上是实例化一个对象,在哪个进程中它可能被初始化.

请注意initialize(设置对象/类/变量的初始状态)和实例化(从类创建对象实例)之间的区别.

->是的T_OBJECT_OPERATOR.