千家信息网

Thinkphp开源框架如何使用?

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,(一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发的项目位置。操作演示如图:其中index.php是入口文件,即所有的请求都要经过此文件才能够完成。Application 是应用
千家信息网最后更新 2024年11月23日Thinkphp开源框架如何使用?

  (一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发的项目位置。操作演示如图:

  其中index.php是入口文件,即所有的请求都要经过此文件才能够完成。Application 是应用目录,在开发过程中,我们手动要操作的文件都在这个文件夹中。Public是资源文件目录thinkPHP是框架目录

  1,index.php入口文件

  2,何为入口文件,,即所有的功能操作都要经过此文件才能够完成。

  代码如下:

  

  // 检测PHP环境

  if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');

  // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

  define('APP_DEBUG',True);

  // 定义应用目录

  define('APP_PATH','./Application/');

  // 引入ThinkPHP入口文件

  require 'D:/Dev Apps/xampp/htdocs/sunyan2015/017/ThinkPHP/ThinkPHP.php';

  // 亲^_^ 后面不需要任何代码了 就是如此简单

  1,从上述代码中 可以看出入口文件主要完成:

  2,载入thinkPHP框架入口文件

  3,定义系统相关常量

  4,定义项目路径

  5,定义调试模式和应用模式在第一次访问入口文件之前,application文件夹没有任何模块,如图:

  现在我们访问入口文件,在浏览器中效果如下

  此时,application文件夹就自动生成了相应模块如图

  进入Home模块,如图

  其中标记的conf,controller,model,view是我们要操作的四个文件夹

  1,Conf文件夹,其中有config.Php是配置文件用来添加或修改一些配置参数2. Controller,model,view三个模块体现了mvc开发模式,view模块只负责呈现视图效果,即用户看到的网页效果,model模块就相当于是一个数据库,通过实例化model对象,我们可以随意对数据库进行操作,controller控制器是模型和视图之间连接的桥梁,从model中取出数据进行操作,然后将结果传递给视图。1模型实例化,我把她理解为链接数据库中具体的某个表。如,在TODOlist中,我建立了两个表,usermessage和listmessage,所以我建立了两个模型类。userMessageModel和listmessageModel,代码如下:

  

  namespace Home\Model;

  use Think\Model;

  class usermessageModel extends Model{

  protected $connection=array(

  'DB_TYPE'=>'mysql',

  'DB_USER'=>'root',

  'DB_PWD'=>'123456',

  'DB_HOST'=>'localhost',

  'DB_PORT'=>'3306',

  'DB_NAME'=>'todolist',

  'DB_CHARSET'=>'utf8',

  'DB_PREFIX'=>' ',

  );

  protected $tablePrefix='';

  }

  ?>

  

  namespace Home\Model;

  use Think\Model;

  class listmessageModel extends Model{

  protected $connection=array(

  'DB_TYPE'=>'mysql',

  'DB_USER'=>'root',

  'DB_PWD'=>'123456',

  'DB_HOST'=>'localhost',

  'DB_PORT'=>'3306',

  'DB_NAME'=>'todolist',

  'DB_CHARSET'=>'utf8',

  'DB_PREFIX'=>' ',

  );

  protected $tablePrefix='';

  }

  ?>

  其中$connection数组定义的是数据库链接信息,$tablePrefix定义的是标的前缀为空。

  3. 控制器,其实就是一个类,由方法组成。如TODOlist我定义了五个方法。方法中具体代码省略,主要先看一下架构:

  

  namespace Home\Controller;

  use Think\Controller;

  class IndexController extends Controller {

  public function index(){

  }

  public function register(){

  }

  public function login(){

  }

  public function logout(){

  }

  public function planlist(){

  }

  }

  ?>

  在view模块中,一个控制器(一个类),对应一个文件夹,文件夹的名称为类的名称,此类的名称为Index,则文件夹的名称为Index,然后在此文件夹中,每个方法对应一个html文件,这是方法的模板文件。如index方法对应index.html模板文件。

  4.

  public function index(){

  $title="欢迎页面";

  $bodytitle="欢迎访问todolist";

  $this->assign("bodytitle","$bodytitle");

  $username=session("username");

  if(empty($username)){

  $login=U('Home/Index/login');

  $register=U('Home/Index/register');

  $this->assign("link1","登录");

  $this->assign("link2","注册");

  }else{

  $logout=U('Home/Index/logout');

  $changepassword=U('Home/Index/changepassword');

  $planlist=U('Home/Index/planlist');

  $this->assign("link1","注销");

  $this->assign("link2","更改密码");

  $this->assign("link3","你的列表");

  }

  $this->display();

  }

  public function register(){

  $user=D("usermessage");

  $error=array();

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if(!empty($_POST['username'])){

  $data['name']=$_POST['username'];

  }else{

  $error[]="请输入用户名";

  }

  if(!empty($_POST['password'])){

  $data['password']=$_POST['password'];

  }else{

  $error[]="请输入密码";

  }

  if(empty($error)){

  $r=$user->where("name='{$data['name']}'")->select();

  if(empty($r)){

  $r1=$user->add($data);

  if($r1){

  $this->assign("error","恭喜你,注册成功");

  }else{

  $this->assign("error","系统正忙,请重新注册");

  }

  }else{

  $this->assign("error","对不起,此用户名已经注册");

  }

  }else{

  foreach($error as $msg){

  $this->assign("error","$msg");

  }

  }

  }

  $this->display();

  }

  public function login(){

  $user=D("usermessage");

  $user->create();

  $error=array();

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if(!empty($_POST['username'])){

  $username=$_POST['username'];

  }else{

  $error[]="请输入用户名";

  }

  if(!empty($_POST['password'])){

  $password=$_POST['password'];

  }else{

  $error[]="请输入密码";

  }

  if(empty($error)){

  $r=$user->where("name='$username'")->select();

  if(!empty($r)){

  $r1=$user->where("name='$username' and password='$password'")->find();

  if(!empty($r1)){

  $this->assign("error","登录成功");

  $this->assign("error1","{$r1['user_id']}");

  session("username","$username");

  session('user_id',$r1['user_id']);

  } else{

  $this->assign("error","密码错误,请重新输入");

  }

  }else{

  $this->assign("error","对不起,此用户名并未注册");

  }

  }else{

  foreach($error as $msg){

  $this->assign("error","$msg");

  }

  }

  }

  $this->display();

  }

  public function logout(){

  $username=session('username');

  if(!empty($username)){

  session(null);

  $username=session('username');

  if(empty($username)){

  $this->assign('logout','注销成功');

  }else{

  $this->assign('logout','注销失败');

  }

  }else{

  $this->assign('logout','您还没有登录');

  }

  $this->display(login);

  }

  public function changepassword(){

  $error=array();

  $user=D('usermessage');

  $username=session('username');

  $user_id=session('user_id');

  if(!empty($username)){

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if(!empty($_POST['newpassword'])){

  $data['password']=$_POST['newpassword'];

  //$user->password==$_POST['newpassword'];

  }else{

  $error[]="请输入密码";

  }

  if(empty($error)){

  $r=$user->where("user_id='$user_id'")->save($data);

  $this->assign("error2","$r");

  if($r){

  $this->assign("error","恭喜你,密码更改成功");

  }else{

  $this->assign("error","系统正忙,请重新更改密码");

  }

  }else{

  foreach($error as $msg){

  $this->assign("error","$msg");

  }

  }

  }

  }else{

  $this->assign('error','请先登录');

  }

  $this->display();

  }

  public function planlist(){

  $username=session('username');

  $user_id=session("user_id");

  $this->assign("username","$username");

  //$user=D("usermessage");

  $list=D("listmessage");

  $list->create();

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if($_POST['orderhidden']=='a'){

  if(!empty($_POST['content'])){

  $data['content']=$_POST['content'];

  $data['user_id']=$user_id;

  $r=$list->add($data);

  if($r){

  $this->assign("message","添加成功");

  }else{

  $this->assign("message","添加失败");

  }

  }else{

  $this->assign("message","请输入内容");

  }

  }

  if($_POST['orderhidden']=='b'){

  $list_id=$_POST['listhidden'];

  $r=$list->where("list_id='$list_id'")->delete();

  if($r){

  $this->assign("message","删除成功");

  }else{

  $this->assign("message","请重新点击删除");

  }

  }

  }

  $r=$list->field("content,list_id")->where("user_id='$user_id'")->select();

  /*if(!empty($r)){

  $num++;

  }

  $this->assign("num",$num);*/

  $this->assign("select",$r);

  $this->display();

  }

  他的模板文件index.html

  

  

  

  {$title}

  

  

  

  

{$bodytitle}

  

  

  

  {$link2}

  

  {$link3}

  

  

  

  Register.html

  

  

  

  登录页面

  

  

  

  

  

  用户名:

  

  

  密码:

  

  请由字母数字或下划线组成,长度为5-21

  

  

  

  

  返回首页

  

  登录

  

  

  {$error}

  

  

  

  Login.html

  

  

  

  登录页面

  

  

  

  

  

  用户名:

  

  

  密码:

  

  

  

  

  

  

  更改密码

  

  返回首页

  

  注销

  

  {$error}

  {$logout}

  {$error1}

  

  Changepassword.html

  

  

  

  更改密码页面

  

  

  

  

  

  新密码:

  

  

  

  

  登录

  

  返回首页

  

  {$error}

  

  {$error1}

  

  {$error2}

  

  

  Planlist.html

  

  

  

  计划列表

  

  

  

  

  

{$username}欢迎来到你的计划列表

  {$message}

  

  

  

  

  

  

  

  

  

  

  {$list.content}

  

  

  

  

  

  

  

  内容:

  

  

  

  

  

  

  更改密码

  

  返回首页

  

  注销

  

  

  

  5.下面就以上代码中的知识点进行讲解1) URL的动态生成:利用thinkPHP内置的U方法。当我点击不同链接的时候,各个模块位置在发生变化,因此固定的路径是不可行的,路径必须是可以变化的。在控制器中,U方法用法如下:

  $planlist=U('Home/Index/planlist');

  $this->assign("link3","你的列表");

  在模板文件中,U方法用法如下

  注销

  1,概括一下为U(模块/控制器/方法),若省略模块名,则默认为当前模块名称

  2,实例化模型类:用D方法或者M方法

  $user=D("usermessage");

  $list=D("listmessage");

  3)CURD操作和连贯操作方法

  (1 )create方法:用于创建数据对象,最典型的应用就是自动根据表单数据创建数据对象,但数据对象是保存在内存中的,并没有实际写入到数据库中,知道使用add或save方法

  (2)save方法:

  $user->where("user_id='$user_id'")->save($data);

  返回值是影响的记录行数

  返回值是自动增长的主键,即一个整型数据

  (3)select方法:用于数据读取,即获取数据表中的多行记录,

  $user->where("name='{$data['name']}'")->select();

  若查询出错,返回值是false,若查询结果为空,则返回null,否则返回二维数组

  (4)delete方法:用于数据删除

  $list->where("list_id='$list_id'")->delete();

  返回值是删除的记录行数

  这四个操作称为CURD操作,是对数据库的基本操作

  (5)data方法:用于设置当前要操作的数据对象的值

  $data['password']=$_POST['password'];

  (6)add方法用于数据写入

  $user->add($data);

  (7)where方法,主要用于添加数据库操作的限制条件

  $user->where("user_id='$user_id'")->save($data);

  $r1=$user->where("name='$username' and password='$password'")->find();

  (8)field方法:选择要返回或操作的字段

  $list->field("content,list_id")->where("user_id='$user_id'")->select();

  4) session的设置与删除

  session("username","$username");

  session('user_id',$r1['user_id']);

  session(null);

  5)模板文件:thinkphp内置了一个基于XML的模板引擎thinktemplate,,在变量输出和制定模板文件时,与smarty模板引擎相同

  $this->assign()

  $this->display()

  我还用到了一个循环标签foreach ,用于计划列表的输出

  方法中的变量输出:$this->assign("select",$r);

  模板文件中的循环输出

  

  

  

  {$list.content}

  

  

  

  

  

  

  


程序员杭州软件测试杭州APP开发杭州PHP工程师

文件 方法 数据 密码 模块 文件夹 模板 登录 入口 数据库 用户 输入 成功 代码 用户名 名称 对象 控制器 开发 控制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 excel服务器都有哪些 考网络技术要学哪些东西 什么是管理数据库系统软件 现代战舰游戏有国内服务器吗 武汉对网络安全人才的需求 做本地服务器需要什么系统 管家婆辉煌版数据库清零 舟山软件开发工具 页游元宝数据库 中职生如何保护网络安全 03服务器卡在应用安全策略 三辉网络技术有限公司 远端服务器没有连接 宁波企业网络安全准入控制哪家好 数据库中表结构由什么构成 中国最大的网络安全社区 警惕哪些网络安全隐患 蜘蛛日志服务器状态码 人性化的软件开发 pdf 大象数据库查询语句 文瀛互联网科技马来西亚 网络安全能力提升ppt 论网络技术对社会发展的作用 csol一直连接游戏服务器失败 2019对口高考数据库试卷 阿里云linux服务器的体验 东亚孢粉数据库网上查询系统 遂宁软件开发行业标准 数据库自动化管理 信息技术选修1网络技术
0