通过引用的方式为对象变量赋值

引起思考的出处: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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值