引起思考的出处:libraries/joomla/registry/registry.php
/**
* Method to recursively bind data to a parent object.
*
* @param object &$parent The parent object on which to attach the data values.
* @param mixed $data An array or object of data to bind to the parent object.
*
* @return void
*
* @since 11.1
*///我的注释 此处为$parent为一个引用 因此他获得值的同时等于变相的为$this->data赋了值
protected function bindData(&$parent, $data)
{
// Ensure the input data is an array.
if (is_object($data))
{
$data = get_object_vars($data);
}
else
{
$data = (array) $data;
}
foreach ($data as $k => $v)
{
if ((is_array($v) && JArrayHelper::isAssociative($v)) || is_object($v))
{
$parent->$k = new stdClass;
$this->bindData($parent->$k, $v);
}
else
{
$parent->$k = $v;
}
}
}
public function loadObject($object)
{
$this->bindData($this->data, $object);
return true;
}
<?php
//关于joomla当中的一些思考class Joomla {
private $data;
private function setData(&$d,$value){
$d = $value; //$d与$this->data为同一个引用,我现在用这种方式给$this->data赋值
}
public function getData(){
return $this->data;
}
public function setDataOther($val){
$this->setData($this->data,$val);
}
}
$s = new Joomla;
$s->setDataOther('hello world');
echo $s->getData();