下面是作为一个新手经常会问到的问题列表,稍加整理:
1、为啥单字母函数去掉了?
单字母函数是TP历史上争议较大的问题,应该说单字母函数的诞生是有历史原因的,但已经到了退出历史舞台的时候了,可能很多人习惯了单字母函数带来的便捷(虽然同时我们也饱受着某些学院用户的抱怨),基于几个原因:
(1)5.0 核心已经不依赖任何函数 只是对常用的操作封装提供了助手函数
(2)助手函数是可以完全自己定义和修改,并不影响其他的使用
(3)现在的IDE提示和自动完成功能已经非常强大了,所以用不用助手函数 或者是否需要改成原来的单字母函数 全凭开发者个人意愿
核心框架不依赖任何助手函数,系统只是默认加载了助手函数,配置如下:
// 扩展函数文件定义
'extra_file_list' => [THINK_PATH . 'helper' . EXT],
因此,你可以随意修改助手函数的名称或者添加自己的助手函数,然后修改配置为:
// 扩展函数文件定义
'extra_file_list' => [ APP_PATH . 'helper' . EXT],
2、数据库查询和模型怎么用?
官方开发手册的所有示例代码为了简洁明了,省略了所有 think 命名空间的类调用,也就是说 如果示例里面的代码是
Db::table('think_user')->select();
那么其实正确的姿势应该是
\think\Db::table('think_user')->select();
或者首先
use think\Db;
然后
Db::table('think_user')->select();
这里,我首先要说声抱歉,3.2的函数封装方式某种意义上掩盖了命名空间的调用问题,让大家感觉不到命名空间的存在意义和调用机制,傻瓜式地在使用,如果5.0还不能让你们清醒认识并掌握到命名空间应该是怎么调用的话,那么我奉劝你可以退出开发者的行列了。
下面来说说关于数据查询的问题,原来在模型里面的数据查询,现在Db类都能完成,并且支持所有的连贯操作方法。 不要试图再使用
M('User')->select();
这样的代码了,因为首先M函数没有了,其次,模型的角色已经变化了。 新版的模型查询都是静态方法,不要试图先实例化模型,然后去进行查询,正确的查询是:
User::get(1); User::all(); User::where('id','>',10)->find();
模型的静态查询返回的才是模型对象实例,每个模型拥有自己的属性和方法。
3、关于配置参数的问题
很多的配置参数或者配置层次都和之前不同了,我建议大家要么看看代码,要么仔细通读下官方的开发手册,不要因为配置的问题浪费自己一整天的时间。
4、怎么才能在控制器中正确的输出模板
5.0在控制器中输出模板,使用方法如下:
如果你的控制器继承了 think\Controller的话,使用:
return $this->fetch('index/hello');
如果你没有继承think\Controller的话,可以使用:
return view('index/hello');
5、没有创建模型类怎么查询?
原先版本的M方法可以支持不用创建类进行查询,新版如何处理呢?
首先,我们要搞明白一个,查询是Db类的事情,如果只是查询数据表的数据到一个数组,那么直接使用
Db::table('think_user')->select();
// 或者
Db::name('user')->select();
就可以了,如果你要返回一个模型对象(为啥要对象 这个可能目前你还不一定能理解),则使用下面的方式:
创建一个User模型类 然后:
User::get(1);
摘录自TP官网