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更多的是用于提示用户,可以定义一个提示页面,将主要的网站功能列在上面,如果用户跳转到一个不存在的地址,可以跳转页面进行友情导航提示

未完待续

原创粉丝点击