天天看點

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

提供這個小竅門。)