cakephp裡面的vendor和plugin 有何差異

edited 十月 2013 in CakePHP
請問各位大大:
cakephp裡面的vendor和plugin 有何差異

看手冊上這兩種都是可以讀取第三方的*.php

只是plugin裡面好像規定好了要建controller、model、view等資料夾

而vendor就沒有指定

這兩種到底有什麼差異呢?最近要做一個 購物車的管理類別 再想要放在哪裡好>_<

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=6274

評論

  • edited 八月 2011
    vendor 是非 CakePHP 結構的函式庫, plugin 則是必須依照特定結構設計;如果是自己開發,也許以 plugin 進行會比較恰當
  • edited 八月 2011
    因為想學鐵大那篇購車物架構(我也是被客戶改到怕了)
    http://www.jaceju.net/blog/archives/1438

    class Cart_Dao_Product extends Cart_Dao{
    var $uses = array('Product');

    public function find($key){
    //vedor應該可以call model
    $this->load('Product');
    return $this->Product->find('all',array('conditions'=> array('Product.id'=>$key )));
    }

    public function findAll($keyList) {
    //$keyList 也是array 裡面放一堆 product.id
    $this->load('Product');
    return $this->Product->find('all',array('conditions'=> array('Product.id'=>$keyList )));
    }
    }

    才建第一個dao 然後裡面再把cakephp的model方法實作進去(紅色),目前是寫到CAEKPHP的vendor去
    結果發現....vendor不知道怎麼call model method Q_Q
    就關卡了...
  • edited 八月 2011
    在 vendor 裡面是可以透過 App::import('Model', 'xxx', false); 之類的方式來呼叫 model ,只要當作一般物件 new 即可使用,只是會建議透過 plugin 架構的 model behavior 進行,因為既然你希望使用 model ,它本身就是 cakephp 的延伸,直接在 cakephp 結構下進行會方便許多(自己 new 之後還會需要處理許多相依性問題)
  • edited 八月 2011
    k大不好意思…
    您說的vendor 裡面是可以透過 App::import('Model', 'xxx', false); 之類的方式來呼叫 model
    我試了一下,好像不行,再看一下文件
    好像是從已經是cakephp的controller import model 這樣
    http://book.cakephp.org/view/944/Vendor-examples

    覺得 App::import 這個動作 好像要基於已經是繼承cakephp app的東西才能用
    因為vendor裡面的一個普通*.php,我又extend自已寫的DAO…
    不過DAO也沒有什麼內容,只有規畫兩個撈資料的function
    funtions find($key){
    //空的
    }
    和funtions findAll($keyList){
    //空的
    }

    基於php不能多重繼承....
  • edited 八月 2011
    App::import() 會需要帶入一些 CakePHP 的函式庫,可以參考 Console 的作法

    不能夠多重繼承,但是可以在物件的屬性中去產生其他類別的實例,只是同時有兩個資料庫存取介面感覺蠻耗資源的
Sign In or Register to comment.