首頁  >  文章  >  後端開發  >  tp5與tp3的差別

tp5與tp3的差別

巴扎黑
巴扎黑原創
2016-11-22 14:29:224406瀏覽

TP5作了很大的改變,更加靈活,沒那麼臃腫了,加入了一些令人振奮的功能,例如php7,unittest等,但是很多TP3下養成的習慣,在tp5可能要改改了。

1 路由的變化 
tp3中定義路由 

Java代碼  

'URL_ROUTE_RULES' => array( //定義路由規則                 => '/Admin/Auth /password',  

    ),  

這樣用http://xx.com/password 和http://xx.com/Admin/Auth/password 
都可以存取到同一個位址http://xx .com/Admin/Auth/password 

而在tp5中是不行的,見Route.php 1251行 


Java代碼  

if (isset(self::$rules['name'][$rulesname] || isset(self::$rules['name'][$name2])) {  

              地 $url));  

            }  

如果在路由中定義了配置的url,則不允許直接訪問,會拋出異常   =>  ['admin/auth/password', ['method '=>'get']],  


用設定的路由存取是正常的,但不會跳到admin/auth/password 

http://xxx/password 

用http://xxx/ admin/auth/password 存取會報錯 


Java代碼  

[0] HttpException in Route.php line 1252                 $route = [$module, $controller, $ action];  

                // 檢查位址是否已定義過路由  
🎠   . '/' . Loader::parseName($controller, 1) . '/' . $action);  

         name2 = '';  

                if (empty($module) || iss              $name2 = strtolower(Loader::parseName($controller, 1) . '/ ' . $action);  

                }  

 les['name'][$name]) || isset(self::$rules['name'][$name2]什麼)

                }  

             'module', 'module' => $route];  

        }  

2 Model的find,select等方法回傳的是Model對象,且不是資料。可以用getData()取得原始資料。建議在Model中定義方法使用db()來查詢數據,在將方法暴露給controller呼叫。 

3 foreach中如果用Model()->save();新增數據,一定要加上->isUpdate(false) 否則只有第一個會是insert,其它都成了update。這個估計是個bug。 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn