2023年6月21日发(作者:)
PHP-thinkPHP快速⼊门1.教程⼤纲这是⼀篇零基础的thinkPHP教程,全篇看完只需要要⼀个⼩时,通过⼀个简单的⽹站,我会由点到⾯的讲述
a.基础的讲述thinkPHP的路由、请求、响应、模板的渲染。
b.如何在thinkPHP框架下实现MVC的设计模式,三层架构之间的跳转和引⽤。
c.如何通过原⽣的SQL语句或者是通过继承model类封装的⽅法实现对于数据库的增删改查。2.⽹站demoa.登录(主要是对于数据库的查找)
b.注册(主要是对于数据库的插⼊)
c.编辑(主要是对于数据库的更新和删除)
这⾥我们建议读者先下载解压源码,运⾏代码后对于页⾯功能有了基础的了解后,再结合下⾯的教程内容,快速了解thinkPHP框架。思索再三我还是决定先简单说⼀下,thinkPHP的MVC框架。
⾸先是view层,我们看到在application下⾯有我们创建的admin应⽤,下⾯有view⽂件件,这⾥便放置着我们需要渲染在页⾯上的html⽂件。其实,这便是我们⽹站⾥⾯的基础页⾯,只不过我们没有放到public⽬录下,⽽是通过view层封装,⽅便我们的controller层进⾏调⽤。其次是controller层,thinkPHP框架中⽤来处理业务逻辑的代码部分,承当着接受页⾯请求,返回响应的责任。控住层连接了实体层和视图层,是⽹站开发的主体部分。controller层的位置和我们的view层是并列的。最后是model层,主要是负责映射数据库中的表,可以⽤来封装从数据库中取出的值,还可以封装⼀些频繁使⽤的⽅法,例如从状态码到实际含义的转换。客观的说,对于⼀些简单的数据库访问来说,其实model层不是必须的,后⾯我们在SQL增删改查⾥⾯会讲到使⽤thinkPHP封装好的原⽣的查询语句,但是model层的实现其实更好⽅便了我们对于批量数据的处理。
3.基础的路由、请求、响应、模板渲染。a.路由⾸先,路由是⽤来简化URL访问时的链接,通过路由规则来控制⽤户的访问。'/'=> 'admin/login/login',举例,我们在application⽬录下打开⽂件,添加这样的⼀⾏,就是告诉浏览器,当⽤户在URL后⾯追加‘/’作为访问路径时,我们就访问’admin/login/login’这个⽅法。b.请求处理业务逻辑时,我们不可避免的产⽣,前后端的交互,这便需要⽤请求来告诉后端需要做那些处理。 $.ajax({ type: "get", url: "admin/login/loginpost", async: true, data: { 'name': name, 'pwd': pwd }, success: function(data) { if(data == "0") { = "admin/edit/editget" } else { alert("请检查⽤户名和密码!") } }, error: function() { alert("服务器出错了") } });我们看这个ajax⾥⾯的请求,就是在登录是前端发送给后端的密码验证请求。c.响应响应是对于页⾯请求的回复,这⾥我们需要对于数据进⾏增删改查的操作,根据处理的结果对页⾯进⾏回复。 //判断登录 public function loginpost(Request $request){ //获取页⾯登录页⾯的数据 $name = $request->param("name"); $pwd = $request->param("pwd"); //通过查询数据库来验证是否正确登录 $admin = Admin::get($name); if(!$admin||$admin['pwd']!=$pwd){ //验证失败 return json("name or pwd has error"); }else{ //验证成功 写⼊session Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); } }如上,便是对于上⾯登录请求的⼀个响应,承接到上⾯,请求收到回复后便会对于结果进⾏处理。d.模板渲染上⾯我们说过,对于页⾯模板的渲染通常是由控制层进⾏调⽤,但是这⾥需要注意,每个controller层⾥⾯的php⽂件都是对应相应的view,⽐如你在控制类中调⽤return view(‘login’);的⽅法,控制类会默认从对应的view/index⽬录下⾯中,这意味中,如果需要进⾏页⾯跳转,就需要修改访问路径。
这⾥,我们只是进⾏提⽰,⽽不会给出详细举例,因为通过查看报错信息可以很轻易的解决这个问题,然后这个问题可以是各位更好的理解thingPHP框架。 增删改查a.插⼊
查看详细的上下⽂,可以参照⽂件
对于原⽣的SQL语句,需要引⼊thinkPHP的Db类。 //sql insert 原⽣SQL语句 $sql = "insert into tb_admin values("".$name."","".$pwd."");"; $result =Db::execute($sql); if($result){ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); } else{ return json("1"); }你也可以使⽤model层进⾏实例化,进⾏插⼊。 //sql insert model method $admin = new Admin; $admin->name = $name; $admin->pwd =$pwd; if($admin->save()){ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); } else{ return json("1"); }b.删除
查看详细的上下⽂,可以参照⽂件 //sql delete 原⽣SQL语句 $sql = "delete from tb_admin where name = "".$name."""; $result =Db::execute($sql); if($result){ session_start(); session_destroy(); return json("0"); } else{ return json("1"); } //sql delete model method $admin = Admin::get($name); if($admin->delete()){ session_start(); session_destroy(); return json("0"); } else{ return json("1"); }c.更新操作
查看详细的上下⽂,可以参照⽂件。 //sql update 原⽣SQL语句 $sql = "update tb_admin set pwd ="".$newpwd."" where name ="".$name."""; $result =Db::execute($sql); if($result){ Session::set('pwd',$newpwd); return json("0"); } else{ return json("1"); } //sql update model method $admin = Admin::get($name); $admin->pwd = $newpwd; if($admin->save()){ Session::set('pwd',$newpwd); return json("0"); } else{ return json("1"); }d.查找操作
查看详细的上下⽂,参照⽂件// //sql select model method// $admin = new Admin;// $admin = $admin->where('name',$name)->find();
$admin = Admin::get($name); if(!$admin||$admin['pwd']!=$pwd){ return json("name or pwd has error"); }else{ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); }下⾯的⽅法原⽣的SQL语句,可以通过value的⽅法获取对应的值。 //sql select value
$adminpwd = Db::name('tb_admin') ->where('name',$name) ->value('pwd'); if($pwd!=$adminpwd){ return json("name or pwd has error"); } else{ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); }下⾯的也是原⽣的SQL⽅法,不过是通过column的⽅法来获取多列的值。 //sql select column //当column只有⼀列时,索引为数字 //当column有很多列时,索引默认为主键,只可以显⽰的申明主键为索引
$result = Db::name('tb_admin') ->where("name",$name) ->column('pwd'); if($result[0]!=$pwd){ return json("name or pwd has error"); } else{ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); }e.批量操作
下⾯的也是查询操作,不过是对于数据的批量查询,然后分页显⽰,是⼀个⾮常使⽤的⽅法。 //获取所有登录⽤户信息 $list = Admin::paginate(3); $this->assign('list',$list); $this->assign('count',count($list));最后,如果有建议和错误,可以在评论区指出,会及时更新。
2023年6月21日发(作者:)
PHP-thinkPHP快速⼊门1.教程⼤纲这是⼀篇零基础的thinkPHP教程,全篇看完只需要要⼀个⼩时,通过⼀个简单的⽹站,我会由点到⾯的讲述
a.基础的讲述thinkPHP的路由、请求、响应、模板的渲染。
b.如何在thinkPHP框架下实现MVC的设计模式,三层架构之间的跳转和引⽤。
c.如何通过原⽣的SQL语句或者是通过继承model类封装的⽅法实现对于数据库的增删改查。2.⽹站demoa.登录(主要是对于数据库的查找)
b.注册(主要是对于数据库的插⼊)
c.编辑(主要是对于数据库的更新和删除)
这⾥我们建议读者先下载解压源码,运⾏代码后对于页⾯功能有了基础的了解后,再结合下⾯的教程内容,快速了解thinkPHP框架。思索再三我还是决定先简单说⼀下,thinkPHP的MVC框架。
⾸先是view层,我们看到在application下⾯有我们创建的admin应⽤,下⾯有view⽂件件,这⾥便放置着我们需要渲染在页⾯上的html⽂件。其实,这便是我们⽹站⾥⾯的基础页⾯,只不过我们没有放到public⽬录下,⽽是通过view层封装,⽅便我们的controller层进⾏调⽤。其次是controller层,thinkPHP框架中⽤来处理业务逻辑的代码部分,承当着接受页⾯请求,返回响应的责任。控住层连接了实体层和视图层,是⽹站开发的主体部分。controller层的位置和我们的view层是并列的。最后是model层,主要是负责映射数据库中的表,可以⽤来封装从数据库中取出的值,还可以封装⼀些频繁使⽤的⽅法,例如从状态码到实际含义的转换。客观的说,对于⼀些简单的数据库访问来说,其实model层不是必须的,后⾯我们在SQL增删改查⾥⾯会讲到使⽤thinkPHP封装好的原⽣的查询语句,但是model层的实现其实更好⽅便了我们对于批量数据的处理。
3.基础的路由、请求、响应、模板渲染。a.路由⾸先,路由是⽤来简化URL访问时的链接,通过路由规则来控制⽤户的访问。'/'=> 'admin/login/login',举例,我们在application⽬录下打开⽂件,添加这样的⼀⾏,就是告诉浏览器,当⽤户在URL后⾯追加‘/’作为访问路径时,我们就访问’admin/login/login’这个⽅法。b.请求处理业务逻辑时,我们不可避免的产⽣,前后端的交互,这便需要⽤请求来告诉后端需要做那些处理。 $.ajax({ type: "get", url: "admin/login/loginpost", async: true, data: { 'name': name, 'pwd': pwd }, success: function(data) { if(data == "0") { = "admin/edit/editget" } else { alert("请检查⽤户名和密码!") } }, error: function() { alert("服务器出错了") } });我们看这个ajax⾥⾯的请求,就是在登录是前端发送给后端的密码验证请求。c.响应响应是对于页⾯请求的回复,这⾥我们需要对于数据进⾏增删改查的操作,根据处理的结果对页⾯进⾏回复。 //判断登录 public function loginpost(Request $request){ //获取页⾯登录页⾯的数据 $name = $request->param("name"); $pwd = $request->param("pwd"); //通过查询数据库来验证是否正确登录 $admin = Admin::get($name); if(!$admin||$admin['pwd']!=$pwd){ //验证失败 return json("name or pwd has error"); }else{ //验证成功 写⼊session Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); } }如上,便是对于上⾯登录请求的⼀个响应,承接到上⾯,请求收到回复后便会对于结果进⾏处理。d.模板渲染上⾯我们说过,对于页⾯模板的渲染通常是由控制层进⾏调⽤,但是这⾥需要注意,每个controller层⾥⾯的php⽂件都是对应相应的view,⽐如你在控制类中调⽤return view(‘login’);的⽅法,控制类会默认从对应的view/index⽬录下⾯中,这意味中,如果需要进⾏页⾯跳转,就需要修改访问路径。
这⾥,我们只是进⾏提⽰,⽽不会给出详细举例,因为通过查看报错信息可以很轻易的解决这个问题,然后这个问题可以是各位更好的理解thingPHP框架。 增删改查a.插⼊
查看详细的上下⽂,可以参照⽂件
对于原⽣的SQL语句,需要引⼊thinkPHP的Db类。 //sql insert 原⽣SQL语句 $sql = "insert into tb_admin values("".$name."","".$pwd."");"; $result =Db::execute($sql); if($result){ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); } else{ return json("1"); }你也可以使⽤model层进⾏实例化,进⾏插⼊。 //sql insert model method $admin = new Admin; $admin->name = $name; $admin->pwd =$pwd; if($admin->save()){ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); } else{ return json("1"); }b.删除
查看详细的上下⽂,可以参照⽂件 //sql delete 原⽣SQL语句 $sql = "delete from tb_admin where name = "".$name."""; $result =Db::execute($sql); if($result){ session_start(); session_destroy(); return json("0"); } else{ return json("1"); } //sql delete model method $admin = Admin::get($name); if($admin->delete()){ session_start(); session_destroy(); return json("0"); } else{ return json("1"); }c.更新操作
查看详细的上下⽂,可以参照⽂件。 //sql update 原⽣SQL语句 $sql = "update tb_admin set pwd ="".$newpwd."" where name ="".$name."""; $result =Db::execute($sql); if($result){ Session::set('pwd',$newpwd); return json("0"); } else{ return json("1"); } //sql update model method $admin = Admin::get($name); $admin->pwd = $newpwd; if($admin->save()){ Session::set('pwd',$newpwd); return json("0"); } else{ return json("1"); }d.查找操作
查看详细的上下⽂,参照⽂件// //sql select model method// $admin = new Admin;// $admin = $admin->where('name',$name)->find();
$admin = Admin::get($name); if(!$admin||$admin['pwd']!=$pwd){ return json("name or pwd has error"); }else{ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); }下⾯的⽅法原⽣的SQL语句,可以通过value的⽅法获取对应的值。 //sql select value
$adminpwd = Db::name('tb_admin') ->where('name',$name) ->value('pwd'); if($pwd!=$adminpwd){ return json("name or pwd has error"); } else{ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); }下⾯的也是原⽣的SQL⽅法,不过是通过column的⽅法来获取多列的值。 //sql select column //当column只有⼀列时,索引为数字 //当column有很多列时,索引默认为主键,只可以显⽰的申明主键为索引
$result = Db::name('tb_admin') ->where("name",$name) ->column('pwd'); if($result[0]!=$pwd){ return json("name or pwd has error"); } else{ Session::set('name',$name); Session::set('pwd',$pwd); return json("0"); }e.批量操作
下⾯的也是查询操作,不过是对于数据的批量查询,然后分页显⽰,是⼀个⾮常使⽤的⽅法。 //获取所有登录⽤户信息 $list = Admin::paginate(3); $this->assign('list',$list); $this->assign('count',count($list));最后,如果有建议和错误,可以在评论区指出,会及时更新。
发布评论