程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> extends CakeRequest,重寫is方法

extends CakeRequest,重寫is方法

編輯:關於PHP編程

背景:Cakephp開發環境版本是2.3.8,服務器的cakephp版本是2.3.5,測試好的代碼上傳到服務器上後發現總爆如下的警告:

Warning (2): strtolower() expects parameter 1 to be string, array given [CORE\Cake\Network\CakeRequest.php, line 478]

經過比對2.3.8和2.3.5發現,2.3.8比2.3.5的function is多了如下的代碼:

         (( = ((, 'is'),  (()) > 0

雖然通過直接修改lib裡的文件就能解決問題,但考慮到以後升級等問題,於是決定自定義這個CakeRequest,重寫is函數。
過程如下:

在app/Config/bootstrap.php中加入如下代碼:

 APP . 'Lib' . DS . 'Network' . DS . 'CakeRequest.php'Error:  Class 'CakeRequest' not found 
require APP . 'Lib' . DS . 'Network' . DS . 'AppCakeRequest.php';

在app/Lib/目錄下新建Network目錄, 將庫裡(lib/Cake/Network/)的CakeRequest.php拷貝至這個目錄中,

然後在這個目錄裡添加AppCakeRequest.php:

<?
 AppCakeRequest 
      is(
         (( = ((, 'is'),  (()) > 0
         = ( (!(->_detectors[  = ->_detectors[ ((['env' ((['value' env(['env']) == ['value' ((['pattern' (bool)(['pattern'], env(['env' ((['options' = '/' . ('|', ['options']) . '/i' (bool)(, env(['env' ((['param' = ['param' = ['value' (->params[]) ? ->params[] ==  :  ((['callback']) && (['callback' (['callback'],  

編輯app/webroot/index.php:

-> AppCakeRequest(),
     CakeResponse(('charset' => Configure::read('App.encoding'

大功告成,錯誤不再爆了,偶是cakephp新手,歡迎拍磚。

參考:http://stackoverflow.com/questions/8554536/extending-the-cakerequest-object

 

最後吐槽一下,今天終於算是把這個項目做完了,半年前應朋友的邀,接下這個Cakephp的網站項目,

雖然工期很輕松,足足給了我大半年的時間,而且朋友的需求也是斷斷續續給我的。

以前從來沒接觸過php,更別說cakephp,而且國內cakephp的資料比較少,很多問題都得去英文或者日文雅虎上找答案。

有時候真的想shi的心都有啊。

這實在是太浪費自己的碎片時間了,以後再也不會接這種私活了。

有空余時間不如學習下自己感興趣的知識不是?

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