天天看点

Typecho Framework 注入简介

注入是Typecho-Framewrok的重要特性。注入写起来非常优雅,在性能上也有好处(避免了函数开销)。本文简要介绍如何使用

Typecho-Framework

的注入。如果你不太了解Typecho-Framework,请先参考

Typecho Framework简介

Typecho Framework: Hello world!

两篇文章。

注入的使用十分简单。

首先我们在入口程序中声明注入的配置文件:

Base::setInjectiveObjects(require(ROOT . '/config/injects.php'));

然后在配置文件

config/injects.php

中绑定需要注入的对象:

return array(

  'ending' => array('Hello\Service\Ending'),

);

这里我们将

ending

绑定到

Hello\Service\Ending

这个我们自行实现的类。

Ending类包含一个方法,该方法返回一个

END

字符串:

namespace Hello\Service;

class Ending

{

  public function endWord() {

    return 'END';

  }

}

在Action中,我们只需声明

ending

变量即可实现注入:

namespace Hello\Action;

use TE\Mvc\Action\AbstractAction;

/**

 * Hello

 *

 * @use AbstractAction

 */

class helloWorld extends AbstractAction

  private  $ending;

  public function execute()

  {

    return array('content', 'Hello, world.' . $this->ending->endWord());

注入很爽吧?

注入会迷惑IDE。 比如,

$this->ending->endWord()

这句,PHPStorm中输入

$this->ending->

之后无法提示、补全方法了。PHPStorm中需要自动提示的话,需要额外使用

@var

注明。(感谢

suchasplus

提供这个小窍门。)