在Zend Framework中,是否可以向控制器內使用的$ this對象添加功能?
我想創建一個API,由存儲在單獨文件夾中的類文件定義。所以會愛上去:
$userDetails = $this->api->user()->getDetails();
這可能嗎?
在Zend Framework中,是否可以向控制器內使用的$ this對象添加功能?
我想創建一個API,由存儲在單獨文件夾中的類文件定義。所以會愛上去:
$userDetails = $this->api->user()->getDetails();
這可能嗎?
這只是對對象實例的引用,因此您只需向所討論的類添加方法和屬性即可。例如:
class MyController extends Zend_Controller_Action
{
protected $api = null;
public function init()
{
$this->api = new ApiClass();
}
public function indexAction()
{
$this->api->user()->details();
}
}
當然,這可能不是最好的方法去做。我可能會把API作爲引導資源,在這種情況下,你幾乎做:
class MyController extends Zend_Controller_Action
{
public function indexAction()
{
$this->getApi()->user()->details();
}
public function getApi()
{
return $this->getInvokeArg('bootstrap')->api;
}
}
在圖書館,在那裏你可以保存自己的類創建一個新的文件夾。例如:Sjwdavies
創建一個新的文件:Sjwdavies/Controller/Action.php
class Sjwdavies_Controller_Action extends Zend_Controller_Action
{
public $api;
}
你的控制器現在要擴展這個類:
class IndexController extends Sjwdavies_Controller_Action
{
public $api;
}
一定要包括你的application.ini庫路徑:
includePaths.library = APPLICATION_PATH "../../library"
謝謝 - 這可能是適合我的問題的最佳答案。我很高興能夠創建Bootstrap資源,但是如何製作類Autoloader?所以我可以調用$ this-> api-> className-> Method而不必創建一個可檢測所有類和方法的api.php文件?必須有一個聰明/自動的方式? – Sjwdavies 2012-02-24 16:12:10
好吧你冷在API類上創建你自己的基礎設施,或者oyu可以利用['Zend_Loader_PluginLoader'](http://framework.zend.com/manual/en/zend.loader.pluginloader.html),但你仍然需要創建API將要使用的所有類。這應該是一個新的問題,因爲它與這個問題完全分離。 – prodigitalson 2012-02-24 17:15:06
謝謝,我不認爲你知道任何例子的鏈接(除了你所包含的例子)?我已經在/ application/api文件夾中創建了所有的類。 – Sjwdavies 2012-02-25 09:47:24