Symfony 2 如何擴展第三方方案
淡淡烟草味
淡淡烟草味 2017-05-16 16:45:49
0
1
373

在symfony2 的目錄結構裡面 該如何擴展第三方呢?
自己在 vendor 裡面寫 還是有規定目錄格式?
symfony1 裡面提供了helper 的模式,2裡面是否也有相同的機制?

淡淡烟草味
淡淡烟草味

全部回覆(1)
黄舟

我直接從文檔裡黏來一些程式碼:

擴充某個bundle,只需要在你自己bundle裡,透過getParent()方法,宣告被擴充的bundle是哪個,下面就是以FOSUserBundle作為擴充物件。

// src/Acme/UserBundle/AcmeUserBundle.php
namespace Acme\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeUserBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle';
    }
}

擴充某個Controller比較簡單,直接繼承目標Controller就好了:

// src/Acme/UserBundle/Controller/RegistrationController.php
namespace Acme\UserBundle\Controller;

use FOS\UserBundle\Controller\RegistrationController as BaseController;

class RegistrationController extends BaseController
{
    public function registerAction()
    {
        $response = parent::registerAction();

        // ... do custom stuff
        return $response;
    }
}

至於其他的如模板、路由等,你要復用、重寫​​哪一個,就在你自己的bundle裡,以相同文件路徑創建就好了。

文件:http://symfony.com/doc/current/cookbo...

UPDATE1:

如果你只是想要加第三方的程式碼進去,按規格是應該放vendors裡,如果你的程式碼符合PSR-0,那就可以實現自動的載入;如果不符合,你要在app/autoload.php裡加對應的include。

至於是否能夠全域使用擴充後的程式碼,取決於調用,不取決於定義。為了維護的方便,你可以自己抽象interface,或是定義sf2裡的service。

你可以參考下sf2的bundle的文檔,以及Composer。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板