当您调用PHP类时 - 为了示例,我将调用类myClass
并为其指定一个名为someMethod()
的方法
以下调用它的方法有什么区别。
$AAA = new myClass();
$AAA->someMethod();
和
myClass::someMethod();
和
$AAA = 'myClass';
$AAA::someMethod();
答案 0 :(得分:2)
首先,让我们澄清一下白话。类得到实例化,方法得到被称为,所以你会说"方法调用方法"而不是"调用类的方法& #34;
现在,你的问题的答案在于上面的澄清:类被实例化,当你这样做时你得到的是一个对象(或对象实例,或实例)。此实例包含方法和数据。
类(不是类的实例化)有方法。其中一些方法要求它们仅在实例上调用(即,它们需要或使用实例数据,例如在方法体中使用$this
)。某些方法可能没有这样的要求,因此可以声明为Static Methods。静态方法(其他语言可能称之为#34;类方法")可直接从类中调用,与" Instance"没有任何关系,这在PHP中意味着它们没有{{ 1}}调用它们时的变量。但它们确实有一个$this
关键字,它指的是调用该方法的类。
PHP在调用实例方法和静态方法之间的语法各不相同:
self
您可能会觉得有趣的是,这只是PHP的 style 决定,并且其他语言具有相同的语法来调用类与实例方法。这是一个Objective-C示例:
$obj->instanceMethod();
ObjClass::staticMethod();