1.MVC思想要深入体会
V层就是用来对数据进行包装的。
那么C层呢,C层就是个大指挥官,它从这边拿点数据,从那边拿点数据,让这个处理处理,让那个处理处理。然后让这个包装一下,让那个包装一下,最后它感觉满意了,再把包装好的产品一并返回给用户。M层呢?就是用来被C层调用的
C层:调用模型M、调用视图V;将模型产生的数据传递给视图,并让视图去显示
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,这个是方便区别控制器和模型命名冲突
设置之后URL地址中访问控制器就不需要加controller
5.如果控制器名字为驼峰法命名,则URL地址访问需要用_分开,配置文件中设置默认是开启的
6.bootstrap安装:下载后把文件放置到TP5.0 public/static文件夹中,然后在视图文件进行引入
7.静态方法
$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
为我们准备好的静态方法。
8.为了防止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();