function &sd_get_platform($vir_uuid) { $virDao = VirDao::getInstance(); return $virDao->getVirByUuid($vir_uuid); }
function &sd_get_platform($vir_uuid) { $virDao = &VirDao::getInstance(); return $virDao->getVirByUuid($vir_uuid); }
这两个返回值有什么不同之处吗?
其中VirDao类中的getInstance方法为:
public static function &getInstance() { static $VirDao = null; if ($VirDao == null) { $VirDao = new VirDao(); } return $VirDao; }
这个应该叫做引用返回,举个例子简单说明下
class foo { public $value = 42; public function &getValue() { return $this->value; } } $obj = new foo; $referenceValue = &$obj->getValue(); $myValue = $obj->getValue(); $obj->value = 2; echo $referenceValue; // 输出2 echo $myValue; // 输出42
具体可以参考 PHP
官方文档 http://php.net/manual/zh/language.references.return.php