thinkphp5 学习的一些注意事项
来源:互联网 发布:ireport java 编辑:程序博客网 时间:2024/06/03 19:25
使用前查看框架的开发规范,做到命名规则的统一
控制器命名的的注意事项
1.建议在配置文件中将控制器的后缀名置为true
// 控制器类后缀'controller_suffix' => true,
因为控制器的类名可能会和模型的类名相同,比如User,Customer,Order之类的。
2.控制器尽量使用一个单词,如果使用两个及以上,首字母大写,其他全小写
class UserinfoController extends Controller{ public function index(){}}
如果所有字母都首字母大写UserInfoController,则访问时index.php/index/userinfo/index会报错,只有写成index.php/index/user_info/index才行。
当然这是在url地址大小写不敏感的时候,如果配置大小写敏感,则可以这样访问index.php/Index/UserInfo/index
一般都开启大小写不敏感,便于用户访问和网址的传播
控制器初始化
即类的初始化,之前版本的初始化一直使用的是__construct()魔术方法,是php自带的,5.0版本新增了一个控制器初始化方法是_initialize()。
区别:
如果你试了之后会发现,两者都是一样的,在方法执行前执行,但是如果使用5.0版本的控制器前缀方法,那结果将不一样。
class IndexController extends Controller{ protected $beforeActionList = [ 'isLogin' => ['only'=>'userinfo'], ]; public function __construct() { parent::__construct(); echo 'is construct<br>'; } public function _initialize() { parent::_initialize(); // TODO: Change the autogenerated stub echo 'is init<br>'; } public function index() { return 'is index'; } protected function isLogin(){ echo "is login<br>"; } public function userInfo(){ return 'is userInfo'; } //结果 /* is init is login is construct is userInfo */}
可以看到_initialize()将先执行,然后是前置方法,再是construct,所以5.0版本的初始化建议使用_initialize()
控制器前置方法使用大小写注意
class IndexController extends Controller{ protected $beforeActionList = [ 'isLogin' => ['only'=>'userinfo'], ]; protected function isLogin(){ echo "is login<br>"; } public function userInfo(){ return 'is userInfo'; }}
only对应的方法名中,需要全部小写,即userinfo,写成userInfo前置方法isLogin不会被执行
关于重定向和跳转的使用注意事项
1.继承了Controller,可以直接使用$this->redirect(),或者使用助手函数redirect(),使用助手函数前面需要加return ,即return redirect()。
只有使用助手函数可以使用return redirect()->remember(),记住当前地址,然后可以跳转后再使用return redirect()->restore()跳转回来,$this-redirect()->remember()不能这样使用
2.success和error方法更多的是用于页面的提示和跳转,虽然参数有支持data,但是试验了普通跳转是无法携带的(真的么?),而error方法手册说会在ajax请求时自动转换数据格式并返回,success在ajax请求时不会。
如此麻烦,不如直接舍弃,只用于页面提示的跳转,ajax请求直接使用return [];或者return json([]);
空操作和空控制器
空操作_empty和空控制器Error更多的是用于提示用户,可以定义一个提示页面,将主要的网站功能列在上面,如果用户跳转到一个不存在的地址,可以跳转页面进行友情导航提示
未完待续
- thinkphp5 学习的一些注意事项
- 学习C++的一些注意事项
- 学习Activity的一些注意事项
- 机器学习的一些注意事项
- thinkphp5的入门学习
- 记录thinkphp5的一些坑
- 关于初学者学习Java的一些注意事项
- 学习设计模式的一些注意事项
- ThinkPHP5与ThinkPHP3的一些异同点
- thinkphp5.0细节注意事项
- ThinkPHP5开发注意事项
- thinkPHP5下扩展encryptedData解密算法文件的注意事项
- 关于Runtime Permissions的学习以及使用的一些注意事项
- SetWindowPos(...) 的一些注意事项。
- MySQL的一些注意事项
- resin的一些注意事项
- mysql的一些注意事项
- Form 的一些注意事项
- oracle表分区
- Bootstrap + AngularJS 双向数据绑定Form表单测试
- 华为OJ——iNOC产品部-杨辉三角的变形
- pdf.js跨域加载文件
- LeetCode
- thinkphp5 学习的一些注意事项
- Android Studio自定义注释模板
- HDU-2049-考新郎 递推|错排
- 原生js cookie的使用实例setCookie()、getCookie()方法
- 给大家推荐一个很好用的Laravel框架的源码,October CMS
- decode 和 case when 的用法
- Python学习14_高级滤波
- 【Redis基础】集群
- 利用inotify+rsync实现linux文件批量更新