我们经常看到PHP里用$object->callback的方法来做调用,比较少看到object::callback这样的写法,不过在C里面,后则的写法比较常见,具体区别在哪里呢?tiandi告诉你实际上两种方法达到的效果几乎一样,唯一的区别就是是否实例化。下面用代码具体展现区别。
有一段代码如下,我们想调用a类去调用b类的dosome方法:
class a{ static private $__instance = null; function single($class_name) { if(!isset(self::$__instance)) { self::$__instance = new $class_name; } return self::$__instance; } } class b { function __construct(){ echo "class init<br>"; } static function dosome() { echo "function do"; } }
第一种常规的$object->callback方法:
$ob = new a(); $ob ->single("b")->dosome();
第二种object::callback的方法:
a::single("b")->dosome();
两种方法返回的都是下面的结果:
class init
function do
可以看到第二种方法,调用前并没有实例化a这个类,而是直接用a::来执行。
文章评分2次,平均分3.0:★★★☆☆
哦。看懂了,没有实例化,学习了。