Heim  >  Artikel  >  Backend-Entwicklung  >  什么是数据注入变量?它的使用场景是什么?

什么是数据注入变量?它的使用场景是什么?

WBOY
WBOYOriginal
2016-06-06 20:51:441230Durchsuche

『 PHP里引入Java中数据注入变量的概念具体如何实现?』
http://segmentfault.com/q/10100000001...

对这一概念及其使用场景不了解,能否介绍一下?

回复内容:

『 PHP里引入Java中数据注入变量的概念具体如何实现?』
http://segmentfault.com/q/10100000001...

对这一概念及其使用场景不了解,能否介绍一下?

与其叫注入变量不如加引用变量更加贴切,正如我在那个问题中所回答的。而这种做法的应用场景则是一切需要用到单例模式引用场景的地方,比如以前你在Controller里调用Model,可能要这么写

class Controller_Test extends Controller
{
    public function execute()
    {
        $this->loadModel('user')->fetch(...);
    }
}

这被称为调用,无论你怎么做单例模式都是从外部调用的这个对象。但是如果你按我在上个答案中提到的方法实现__get,那么这个从外部调用的对象就注入成了内部属性,它的好处是显而易见的,从写法上说减少了很多麻烦而且更加清晰,从性能上说减少了多次调用时检测以及函数调用消耗

class Controller_Test extends Controller
{
    public function execute()
    {
        $this->userModel->fetch(...);
    }
}

举个例子吧。
User:

id | name | age

这样,如果有变量注入,初始化一个对象。

$user = new UserObj();
// 此时 $user 这个实例中并没有载入 name 数据
echo $user->name;
// 调用name属性的时候,才进行注入,载入数据

事实上,这个UserObj并没有定义name属性,而是注入进去的
在User里加入一个字段 birthday

id | name | age | birthday

那调用的时候,已然是直接调用,不需要修改UserObj的定义

$user = new UserObj();
echo $user->birthday;
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn