程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> CakePHP 2.x 升級3.0,cakephp2.x升級3.0

CakePHP 2.x 升級3.0,cakephp2.x升級3.0

編輯:關於PHP編程

CakePHP 2.x 升級3.0,cakephp2.x升級3.0


CakePHP 2.x => 3.x 升級手順

一、Controller層

  1.find('list')
    原2.x中該方法通過指定option中的'fields'來實現key=>value
    3.x通過option中的'keyField'和'valueField'來替換,返回值需要用toArray()進行轉換

  2.find('first')、find('count')
    3.x中已經完全廢棄掉這兩個參數,而使用find()->first()以及find()->count()進行替換

  3.find查詢關聯表時,必須添加'contain'屬性,Cake 3.x 默認不會將表關聯在一起

  4.findById
    **?沒有找到相關文檔?**
    2.x中findById格式為($id,array $fields)
    3.x中可能只有一個參數($id),需要通過select(array $fields)方法來篩選數據

  5.Component->initialize()
    2.x通過initialize(Controller $Controller)獲取調用該Component的Controller
    3.x改變了initialize的參數變為initialize(array $config),通過$controller = $this->_registry->getController();獲取

  6.SessionComponent
    3.x廢棄掉了該Component而改用$this->request->session()替換

二、Model層

  1.Associations
    2.x通過定義屬性來實現關聯
    3.x需要在Table中的initialize方法中調用$this->belongsTo、$this->hasMany、$this->belongsToMany、$this->addAssociations等方法來實現

  2.Validation
    2.x通過定義validate屬性實現數據驗證
    3.x需要在Table中定義validationDefault(Validator $validator)方法來實現

  3.virtualFields
    3.x中廢棄了這個屬性,如需使用,需要在Entity中追加方法
    例如 需要A表定義虛擬字段 full_name
    首先要在A表的Entity中追加 protected function _getFullName()
    然後將 full_name 添加到$_accessible中
    使用時A->find 後該值只可通過object->property的方式獲取,無法通過數組方式獲取

  4.field()
    **?沒有找到相關文檔?**
    3.x可能廢棄了該方法可以用get()方法替換

  5.ClassRegistry::init()
    3.x廢棄該方法需要用TableRegistry::get()替換

  6.Mysql別名設定
    2.x只需要在fields屬性中加入as即可 如 'fields'=>array('id as table_id')
    3.x如定義別名需要用加入key 如 'fields'=>['table_id'=>'id']

三、View層

  (View層,從2.x的View文件夾搬遷到3.x的Template)

  1.$this->Html->url
    3.x中用$this->Url->build替代

四、Bug

  1. Associations
    hasMany的表關聯查詢時,如果需要指定fields則必須在fields中加入關聯鍵???

此升級手順會持續更新中~~~~~~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved