浅谈PHP之ThinkPHP框架使用详解


Posted in PHP onJuly 21, 2020

Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板、V为视图、C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应。

下载及配置

官网(http://www.thinkphp.cn/)下载ThinkPHP5.0,将解压文件放在网站目录下的ATP5子目录下

默认主页:http://localhost:8099/ATP5/public/index.php

如果要隐藏index.php且服务器为Apache则需要将public\.htaccess下内容替换为:

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

版本要求

php版本大于等于5.4

访问规则

http://localhost:8099/ATP5/public /模块/控制器/方法

其中http://localhost:8099/ATP5/public /为thinkphp的公共入口,模块的区分可以实现如管理员和用户的不同入口。

命名规则

模块名:全部小写

控制器名:首字母大写

方法名:全部小写

注意:

URL输入时不区分大小写,框架会自动根据标志转换,可在config里设置(url_convert' => false)

如果控制器名为驼峰式命名(如HelloWorld)访问时地址栏应用下划线处理(如 hello_world)

新建入口App

复制一份application,然后在public/index.php中修改对应的入口名字

建立MVC目录

命名规则:

模板(model):首字母大写

视图(view):全部小写

控制器(controller):首字母大写

浅谈PHP之ThinkPHP框架使用详解

显示错误信息和调试

打开应用的目录里的config.php文件配置:

app_debug 值为true则显示调试信息

show_error_msg 值为ture 则显示错误信息

CSS和JS及图片的地址引用

在视图目录下想要引用到一些资源文件,如css,js,图片等,是不支持使用把相关文件放到view目录下的,应该把资源文件放在public目录下,然后在App中的config.php里的view_ replace_str下添加资源文件的目录宏定义

// 视图输出字符串内容替换
  'view_replace_str'    => [

    '__DSTYLE__'=>"/atp/public/static/library",
    '__DIMG__'=>"/atp/public/img",

  ],

使用:

如果修改后在开发者工具发现数据使用依然是上一次更改的地址,说明有缓存在作怪,可以到 runtime\temp 目录下清除

<img src="__DIMG__/banner7.png">
 <link rel="stylesheet" href="__DSTYLE__/donglayui/layui/css/layui.css" rel="external nofollow"  media="all">

简单的值匹配

浅谈PHP之ThinkPHP框架使用详解

视图代码:

<!doctype html>
 <h1>--{$name1}--</h1>
 <h2>--{$name2}--</h2>

控制器代码:

<?php
namespace app\index\controller;
//导入必要模块
use think\Controller;


class Xiao extends Controller
{
  public function xiao2(){
    $valuex1="匹配值1";
    $valuex2="匹配值2";
    //匹配,变量赋值
    $this->assign("name1",$valuex1);
    $this->assign("name2",$valuex2);
     //渲染输出
    //返回视图 fetch实参为空表示找函数同名的html,实参可以传递其它视图名称
    return $this->fetch();
  }

}

数组值的匹配

视图中获取

{$ff.1}

控制器

$valuex2=array("0","1","1");
$this->assign("ff",$valuex2);
return $this->fetch();

Volist的使用

该方法是thinkphp中很有趣的方法,其可以实现在视图文件中进行数组的循环遍历,最常会使用其进行数据库表格的遍历显示。

浅谈PHP之ThinkPHP框架使用详解

视图中的代码:

<table border="1">
      <!--表格头-->
      <thead>
       <tr>
        <th>id</th>
        <th>用户名</th>
        <th>昵称</th>
        <th>备注</th>
       </tr>
      </thead>

      <!--表格内容-->
      <tbody>
        <!--循环遍历-->
        {volist name="listallh" id="vo"}
        <tr>
         <td>{$vo.id}</td>
         <td>{$vo.user}</td>
         <td>{$vo.name}</td>
         <td>{$vo.oo}</td>
        </tr>
       {/volist}
      </tbody>
</table>

控制器代码:

$listall=array();
   $listall[]=array("id"=>1,"user"=>"dong1","name"=>"dongxiaodong1","oo"=>"无");
   $listall[]=array("id"=>2,"user"=>"dong2","name"=>"dongxiaodong2","oo"=>"无");
   $listall[]=array("id"=>3,"user"=>"dong3","name"=>"dongxiaodong3","oo"=>"无");
   $listall[]=array("id"=>4,"user"=>"dong4","name"=>"dongxiaodong4","oo"=>"无");
   $this->assign('listallh',$listall);
   return $this->fetch();

公共界面

如果多个页面需要使用到同一个HTML代码块,可以将代码块放到外面,其它界面直接通过引用即可

在view目录下创建自定义文件名字的文件夹(public_view),里面创建自定义文件名的HTML文件(menu.html),在需要的地方直接通过【{include file="public_view/menu"}】引入即可

创建公共文件

浅谈PHP之ThinkPHP框架使用详解

HTML内容

<h2>东小东内容匹配页</h2>

在其它页面中使用

<h2>东小东</h2>
{include file="public_view/menu"}

显示效果

浅谈PHP之ThinkPHP框架使用详解

到此这篇关于浅谈PHP之ThinkPHP框架使用详解的文章就介绍到这了,更多相关PHP ThinkPHP框架内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
处理php自动反斜杠的函数代码
Jan 05 PHP
PHP 一个页面执行时间类代码
Mar 05 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
Sep 16 PHP
浅谈php常用的7大框架的优缺点
Jul 20 #PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 #PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 #PHP
PHP+MySql实现一个简单的留言板
Jul 19 #PHP
PHP8.0新功能之Match表达式的使用
Jul 19 #PHP
PHP程序守护进程化实现方法详解
Jul 16 #PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 #PHP
You might like
一个php作的文本留言本的例子(二)
2006/10/09 PHP
php GD绘制24小时柱状图
2008/06/28 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
php中的动态调用实例分析
2015/01/07 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
微信小程序日期选择器实例代码
2018/07/18 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
Python列表生成器的循环技巧分享
2015/03/06 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
python属于哪种语言
2020/08/16 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
教师个人总结范文
2015/02/11 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
《学会看病》教学反思
2016/02/17 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书