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']],
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。