TP5随笔

1.MVC思想要深入体会

V层就是用来对数据进行包装的。
那么C层呢,C层就是个大指挥官,它从这边拿点数据,从那边拿点数据,让这个处理处理,让那个处理处理。然后让这个包装一下,让那个包装一下,最后它感觉满意了,再把包装好的产品一并返回给用户。M层呢?就是用来被C层调用的

namespace app\index\controller;     // 该文件位于application\index\controller文件夹
use think\Controller;   // 用于与V层进行数据传递
use app\common\model\Teacher;       // 教师模型
/**
 * 教师管理,继承think\Controller后,就可以利用V层对数据进行打包了。
 */
class TeacherController extends Controller

2.php5.4.3编换成php7.0之后访问页面会提示错误,要下载安装 xdebug放在php文件夹内 并更改php.ini文件(xdebug可以用来跟踪,调试和分析PHP程序的运行状况并且影响var_dump返回数据显示形式)

[XDebug]
zend_extension="D:\phpStudy\php\php-5.4.45\php_xdebug.dll"

3.入口自动绑定模块要设置成true    'auto_bind_module' => true,

4. 控制器类后缀要设置成true    'controller_suffix' =>true, 

所有控制器后面需要加上Controller,这个是方便区别控制器和模型命名冲突

5.bootstrap安装:下载后把文件放置到TP5.0 public/static文件夹中,然后在视图文件进行引入

6.静态方法

扫描二维码关注公众号,回复: 4031112 查看本文章

$postData = Request::instance()->post();可以替换为$postData = $this->request->post(); 同样可以获取表单post数据,但是倾向于使用前者

在前面的3.2.3中,我们使用Db::name('teacher')->select();来获取了数据表中的数据。对比我们在这里使用的Request::instance()->post();不难发现::这个符号。在这里,我们可以把Db::name('teacher')理解为调用Db类中的name方法;把Request::instance()->post();理解为调用Request类中的instance()方法。

前面我们在提到面向对象的思想时,讲过面向对象的步骤是:先实例化一个对象,然后调用这个对象上的方法。

那么为什么这里,我们没有实例化Db类,却直接使用了::调用name()方法呢?

这是由于在类中有一种方法叫做静态方法静态方法可以不进行实例化而直接使用::来调用。而上面的name()instance()都是ThinkPHP为我们准备好的静态方法。

7.为了防止sql注入(一种非常常见的攻击手法),我们在取一些系统变量信息时,使用thinkphp提供给我们的Request来获取用户输入的变量。

那么怎么防止sql注入呢?下面,我们在config.php中设置一下过滤方法:

    // 默认全局过滤方法 用逗号分隔多个
    'default_filter'         => 'htmlspecialchars',
use think\Request;			// 引用Request
...
    public function insert()
    {
        var_dump($_POST);
        // Request::instance()返回了一个对象,调用这个对象的post()方法,得到post数据
        $postData = Request::instance()->post();  

猜你喜欢

转载自blog.csdn.net/wocaa2046/article/details/83958458
tp5