我们经常看到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:★★★☆☆

哦。看懂了,没有实例化,学习了。