thinkphp使用方法是什么

thinkphp使用方法是什么

一、项目部署

1、虚拟主机部署/本地部署

去掉public/index.php改到 根目录下/index.php。在网站根目录下建立文件index.php,内容如下

<?php// 定义应用目录define('APP_PATH', __DIR__ . '/apps/');// 加载框架引导文件require  './thinkphp/start.php';

这样基本上就可以了,这是最简单的配置。

立即学习“PHP免费学习笔记(深入)”;

2、服务器部署

服务器部署项目文件入口public ,优势:只给外人看到public目录下的文件,与public同级的文件,在外网是隐藏状态的,如:thinkphp、apps、extend、tests、vendor。更简单的意思就是通过域名是访问不到这些文件下内容的,但又不影响框架的使用。

二、创建模块(自动生成模块)

我的项目是部署在本地www/thinkphp 目录下。在做之前,先要考虑清楚,你需要几个模块来完成你的项目。

开始实例

1、创建三个模块 Common(公共模块),Home(前台模块),Admin(后台模块)。公共模块是必不可少的。

修改的情况下为public下的index.php,打开是这样子的

// 定义应用目录define('APP_PATH', __DIR__ . '/../application/');// 加载框架引导文件require __DIR__ . '/../thinkphp/start.php';

在后面加上这两句

$build = include '../build.php';// 运行自动生成\think\Build::run($build);

build.php配置 (自动生成目录) 手册参考:http://www.kancloud.cn/manual/thinkphp5/118021

在项目的根目录有一个build.php文件,打开后看到是这样的:

 ['common.php', 'config.php', 'database.php'],     // 定义demo模块的自动生成 (按照实际定义的文件名生成)    'demo'     => [        '__file__'   => ['common.php'],        '__dir__'    => ['behavior', 'controller', 'model', 'view'],        'controller' => ['Index', 'Test', 'UserType'],        'model'      => ['User', 'UserType'],        'view'       => ['index/index'],    ],    // 其他更多的模块定义];

然后我们给我们需要的文件名在这个地方加上,给的demo可以直接注释掉,如下:

 ['common.php', 'config.php', 'database.php'],    //公共模块目录    'common' => [        '__file__'   => ['common.php'],        '__dir__'    => ['controller', 'model','lang'],        'controller' => ['Index'],        'model'      => ['Base'],    ],    // Index模块    'home'     => [        '__file__'   => ['common.php'],        '__dir__'    => ['behavior', 'controller', 'model', 'view','lang'],        'controller' => ['Index'],        'model'      => ['Test'],        'view'       => ['index/index'],    ],    // Admin 模块    'admin'     => [        '__file__'   => ['common.php'],        '__dir__'    => ['behavior', 'controller', 'model', 'view','lang'],        'controller' => ['Index'],        'model'      => ['Test'],        'view'       => ['index/index'],    ], ];

1)其中的SITE_PATH,与 RUNTIME_PATH后面都有用到,所有优先放在index.php里面方便后面调用。

2)这两个东西,要放一起使用

$build = include './build.php';// 运行自动生成\think\Build::run($build);

相关推荐:《ThinkPHP教程》

三、创建基类

开干之前,得先设置好“基类”,为什么呢?打个比方,要访问会员中心相关的控制器,这类控制器是不是都要有一个“登录限制”,才让访问会员相关的控制器? 基类的作用就出来了。

1、创建三大基类

原始基类

位置:thinkphp\apps\common\controller\base.php

作用:base模块下的内容,Index模块,和Admin模块都可以调用。

代码:

<?php/** * 原始基类 * */namespace app\Common\controller;use  think\Controller;class Base extends Controller{    public function _initialize()    {        parent::_initialize();        echo '原始基类';    }    public function test1(){        return 'test1';    }}

Index模块基类

位置:thinkphp\apps\common\controller\base.php

作用:Index模块下的控制器,都要“继承基类”并且“调用基类”。

代码:

<?php/** * 前端基类 * */namespace app\index\controller;use  app\Common\controller\Base;class IndexBase extends  Base{    public function _initialize()    {        parent::_initialize();    }    public function index()    {            }}

Admin模块基类

位置:thinkphp\apps\common\controller\base.php

作用:Admin模块下的控制器,都要“继承基类”并且“调用基类”。

代码:

/** * 后台首页 * */namespace app\Admin\controller;use app\Admin\controller\AdminBase;class Index extends AdminBase{    public function _initialize()    {        parent::_initialize();    }    public function index()    {        return $this->fetch();    }}

(User模块基类,如果有会员的话,这个也必须要创建的)

创建基类的主要目的,就是“继承”与“调用”。

四、设置模板路径

默认的模板路径在模块/view文件里面。如果你觉得这样不太方便管理,想要把他设置Template目录下,可以这样做。

模板参数 ,能够影响的它参数,是当前模块下config.php template->view_path参数。

实际操作

1、配置共享参数

在apps/config.php设置一些参数,方便在Index或Admin模块下config.php调用。

apps/config.php,增加一些参数。

'template'               => [// 模板路径        'view_path'    => 'template/',     // 就是这里/**     * 前台文件配置     * Author: MR.zhou     * */    'index' => [        // 模快名称        'model_name' =>'index',        // 默认模板文件名称        'default_template' => 'default',       // 这里可以切换模块下的默认模板名称    ],    /**     * 后台文件配置     * Author: MR.zhou     * */    'admin'=>[        // 模快名称        'model_name' =>'admin',        // 默认模板文件名称        'default_template' =>'default',        // 这里可以切换模块下的默认模板名称],

2、设置模板参数

index/config.php

'template'=> [    // 模板路径    'view_path'=> config('template.view_path').config('index.model_name').'/'.config('index.default_template').'/',],

admin/config.php

 [        // 模板路径        'view_path'    => config('template.view_path').config('admin.model_name').'/'.config('index.        default_template').'/',    ],];

扩展:

1.模板后缀view_suffix,它的影响

http://localhost/thinkphp/index/news/index/id/1212

http://localhost/thinkphp/index/news/index/id/1212.html

五、配置data文件夹

如果你看项目下的各种文件,有种乱七八糟的感觉的话,你就可以进行以下配置。

配置data文件夹的,整理各种文件,让看起来舒服些。

1、设置runtime文件夹

index.php

define('RUNTIME_PATH', __DIR__ . '/data/runtime/');

2、设置upload,存放上传图片、上传文件

3、设置static,存放jquery.js、bootstrap、一些效果插件什么的

// 视图输出字符串内容替换'view_replace_str'       => [    '__DATA__' => SITE_PATH.'data/',    // 上传文件路径    '__UPLOAD__' =>SITE_PATH.'data/upload/',    //  静态文件路径 (如bootshop,js,css)    '__STATIC__' =>SITE_PATH.'data/upload/',    ],

4、定义模板文件路径,方便调用模板下的css、js、images

'view_replace_str'       => [    // 模板文件路径    '__TEMPLATE__' => config('template.view_path').config('index.model_name').'/'.config('index.default_template')    .'/',    // 模板下的共享文件路径(css,js,images...)    '__PUBLIC__' => SITE_PATH.'/'.config('template.view_path').config('index.model_name').'/'.config('index.    default_template').'/public/',],

模板页引用:

thinkphp使用方法是什么

5、想放什么都可以,自己设置 

六、公共模块common的使用

法语写作助手 法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31 查看详情 法语写作助手

common模块属于公共模块,Thinkphp框架,默认就能调用。

实际用处:任何模块都可能用到的模型、控制、事件提取出来放到公共模块下。

1、公共事件 apps\common\common.php

作用:一般存放密码加密、下拉框封装、读取某文件夹下文件

/** * 密码加密 * @param string $password * @param string $password_salt * @return string */function password($password, $password_salt){    return md5(md5($password) . md5($password_salt));}

2、公共配置 apps\common\config.php

把Index模块、Admin模块公用的部分提取出来放到这里面,如:公用的模板路径

'template'               => [    // 模板路径    'view_path'    => 'template/',]

3、公共语言包 apps\common\lang\zh-cn.php

比如经常用到的词 提交成功、提交失败、执行成功、执行错误、添加成功、添加失败、修改成功、修改失败、删除成功、删除失败… 可以放到公共语言包,在Index模块、Admin模块都可以用的到。

 '执行成功',    'error'            => '执行失败',    'add_success'      => '添加成功',    'add_error'        => '添加失败',    'edit_success'     => '修改成功',    'edit_error'       => '修改失败',    'delete_success'   => '删除成功',    'delete_error'     => '删除失败',];

php页面调用:$lang = lang(‘success’)

html页面调用:{:lang(‘success’)}

4、公共控制器 apps\common\common.php

跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。

5、公共模块 apps\common\common.php

跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。

七、设置错误页面①

设置网站的错误提示页面,也是一个很重要的环节。

1、空操作

在当前控制器里面增加_empty操作

public function _empty(){    $this->error('方法不存在');}Public function index(){       }

测试方法:

正常:

http://localhost/thinkphp/index/index/index

错误: 会提示“方法不存在”

http://localhost/thinkphp/index/index/df

2、空控制器

在模块下建立Error控制器,

位置: index/error.php 相关参数:empty_controller

代码:

<?php/** * 前端首页 * */namespace app\index\controller;use app\index\controller;class Error extends IndexBase{    public function index(){        echo '访问的控制器不存在';    }}

测试:http://localhost/thinkphp/index/inde3dfx/index

3、异常错误抛出

能够影响它的是,当前模块下的配置文件。如果当前配置文件无效,则会自动锁定公共模块下的配置参数。

相关参数:exception_tmpl,error_message

// 异常页面的模板文件'exception_tmpl'=> THINK_PATH . 'tpl' . DS . 'think_exception.tpl',

八、设置错误页面②

完美的去设置错误页面

1、准备一个错误页面 error.html,位置:thinkphp\template\index\default\error.html ,准备把前段所有的错误提示都指向这里。

2、空操作指向

在apps\index\controller\Indexbase.php,“基类”里面设置_empty。

<?php/** * 前端基类 * */namespace app\index\controller;use  app\Common\controller\Base;class IndexBase extends  Base{    public function _initialize()    {        parent::_initialize();    }    /**     * 空操作 跳转     * */    public function _empty(){        //abort();             exception();     //  这两种方法都可以    }}

3、空控制器指向

在apps\index\controller\Error.php

<?php/** * 空控制器跳转 * */namespace app\index\controller;use app\index\controller;class Error extends IndexBase{    public function index(){        abort();    }}

4、异常错误指向 

在 index/config.php exception_tmpl 参数

'exception_tmpl'         => THINK_PATH . 'tpl' . DS . 'think_exception.tpl', //'exception_tmpl' =>'E:/wamp/www/thinkphp/template/index/default/error.html',

注意:地址一定要绝对路径。

拓展,

401,404,500等错误页面自定义

相关参数:http_exception_template

手册地址:http://www.kancloud.cn/manual/thinkphp5/163256

代码:

config.php

'http_exception_template'    =>  [        // 定义404错误的重定向页面地址        404 =>  ROOT_PATH.config('template.view_path').config('index.model_name').'/'.config        ('index.default_template').'/404.html',        // 还可以定义其它的HTTP status        401 =>  ROOT_PATH.config('template.view_path').config('index.model_name').'/'.config        ('index.default_template').'/401.html',    ],

控制器调用

abort(404,’错误信息’)

error.html,404.html 页面代码,可以参考thinkphp\thinkphp\tpl\think_exception.tpl

九、路由别名Route

主要作用:隐藏自己的真实路由名称

Route.php

方法一:

<?phpuse think\Route;Route::alias('home','index/index');Route::alias('admin','admin/index');

方法二:

 [        'name' => '\w+',    ],    '[hello]'     => [        ':id'   => ['index/hello', ['method' => 'get'], ['id' => '\d+']],        ':name' => ['index/hello', ['method' => 'post']],    ],    '__alias__' =>  [        'home'  =>  'index/index',       'admin'=> 'admin/index'    ],];

http://localhost/thinkphp/index.php/home/test 同等与http://localhost/thinkphp/index.php/index/index/test

http://localhost/thinkphp/index.php/admin/edit/ 同等与http://localhost/thinkphp/index.php/admin/index/edit

注释:别名 => ‘模型/控制器’ ( 别名等于模块+控制器)

十、路由设置,隐藏indx.php

网站根目录下.htaccess

Options +FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

以上就是thinkphp使用方法是什么的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/497979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 18:57:53
下一篇 2025年11月8日 19:02:07

相关推荐

  • 如何编写ThinkPHP的自定义标签库?

    如何编写thinkphp的自定义标签库?在项目的taglib目录下创建一个新的php文件,定义一个继承自thinktemplatetaglib的类,并在其中定义标签处理方法。 在ThinkPHP中编写自定义标签库是一项能够大幅提升开发效率的技能。通过自定义标签库,你可以将复杂的逻辑封装成易于使用的标…

    2025年12月5日
    000
  • ThinkPHP服务容器(Container)与依赖注入

    thinkphp的服务容器和依赖注入通过集中管理对象创建和降低对象耦合度,提升了代码的可维护性和灵活性。1.服务容器负责对象的创建和生命周期管理。2.依赖注入通过传递依赖对象,降低了代码耦合度。3.使用时需注意性能、复杂性和学习曲线。4.优化方法包括延迟加载、单例模式和接口实现分离。 在开发过程中,…

    2025年12月5日
    000
  • ThinkPHP6数据库操作指南:增删改查搞定

    ThinkPHP6数据库操作指南:增删改查搞定 引言:在Web开发过程中,数据库操作是必不可少的一环。数据库是用于存储和管理数据的关键工具,而对数据库进行增删改查操作更是经常用到的功能。本文将介绍使用ThinkPHP6框架进行数据库操作的基本方法和技巧,并提供代码示例供读者参考。 一、连接数据库在使…

    2025年12月5日
    000
  • 如何安装和配置ThinkPHP开发环境?

    如何安装和配置thinkphp开发环境?首先,安装php 7.2+和web服务器(如xampp或wamp);其次,使用composer安装thinkphp框架;最后,配置应用和web服务器指向thinkphp的public目录。 在开始我们的ThinkPHP之旅前,让我们先回答一个关键问题:如何安装…

    2025年12月5日
    000
  • PHPCMS和织梦CMS的开发成本和维护成本对比评测

    织梦cms初期成本低但长期维护风险高,phpcms前期投入大但长期更省成本。织梦cms因模板资源丰富、操作简单,适合预算有限、需求标准化的短期项目,能快速建站并节省初期人力与时间成本;但其安全性差、代码混乱,后期易出现漏洞修补难、扩展性差等问题,导致维护和升级成本陡增。phpcms采用mvc架构,模…

    2025年12月5日 后端开发
    000
  • ThinkPHP的多语言支持怎么用?ThinkPHP如何切换语言包?

    thinkphp的多语言支持通过配置语言包、使用lang()函数或模板标签实现内容国际化,并通过url参数、session/cookie或浏览器识别等方式切换语言。1. 多语言包组织在lang目录下,以zh-cn.php、en-us.php等形式命名,支持按模块进一步分组;2. 调用语言文本使用la…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的Cookie如何操作?ThinkPHP如何加密Cookie数据?

    thinkphp中操作cookie非常直观,框架提供了便捷的辅助函数和类来设置、获取和删除cookie,并且内置了自动加密机制。1. 设置cookie:可通过cookie()函数或cookie::set()方法实现,支持带选项的设置如有效期、路径、域名等;2. 获取cookie:通过cookie(&…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的安全机制是什么?ThinkPHP如何防止SQL注入?

    thinkphp通过参数绑定、配置安全措施及输入过滤机制防止sql注入等安全问题。1. 参数绑定:使用where()或bind()方法将数据与sql语句分离,防止恶意代码执行;2. 配置安全:关闭调试模式、验证上传文件、定期更新框架、限制数据库权限、使用https;3. 输入过滤:默认使用htmls…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的密码加密怎么实现?ThinkPHP如何使用哈希加密?

    在thinkphp中处理密码加密的核心方法是使用php内置的password_hash()和password_verify()函数。1. password_hash()用于注册或修改密码时对明文密码进行哈希处理,自动加盐并调整计算成本,有效防止彩虹表攻击和暴力破解;2. password_verif…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的性能优化有哪些?ThinkPHP如何提高响应速度?

    1.性能优化需从配置、数据库、缓存、代码、服务器环境五方面入手;2.配置上关闭调试模式、优化路由规则;3.数据库优化包括索引使用、sql精简、避免n+1查询、合理使用orm及分页;4.缓存策略涵盖数据、模板、查询缓存,结合redis/memcached并设计合理失效机制;5.代码层面减少冗余计算、利…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的XSS防护怎么实现?ThinkPHP如何过滤用户输入?

    thinkphp通过内置机制提供xss防护基础,但开发者仍需结合业务主动构建防线。1.默认使用htmlspecialchars过滤输入特殊字符;2.配置default_filter支持多层过滤函数如strip_tags和htmlspecialchars;3.对特定字段可指定过滤规则;4.输出富文本时…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的定时任务怎么做?ThinkPHP如何设置计划任务?

    thinkphp本身不内置调度器,需借助操作系统定时功能实现。1.创建继承thinkconsolecommand的类,定义任务逻辑;2.在config/console.php中注册命令;3.linux下配置cron触发php think执行任务;4.windows下通过任务计划程序配置触发;5.注意…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的缓存功能有哪些?ThinkPHP如何使用Redis缓存?

    thinkphp通过统一的api和驱动式设计,实现了对redis等缓存系统的灵活支持。1. 配置redis需安装php-redis扩展,并在cache.php中设置type为redis及连接参数;2. 使用cache()函数或cache门面进行缓存操作,如设置、获取、删除缓存;3. 支持缓存标签实现…

    2025年12月5日 PHP框架
    000
  • ThinkPHP6架构设计与拓展:构建可扩展的应用

    ThinkPHP6架构设计与拓展:构建可扩展的应用 引言:随着互联网的快速发展,业务的复杂性和规模不断增加,对于一个框架来说,可扩展性和性能的要求也越来越高。ThinkPHP6作为一款流行的PHP框架,以其简洁、高效和灵活的特点受到了广大开发者的喜爱。本文将介绍ThinkPHP6架构设计的核心理念和…

    2025年12月5日
    000
  • ThinkPHP的模型是什么?ThinkPHP如何定义数据模型?

    thinkphp的模型是对数据库表的面向对象抽象,用于简化数据库操作。它通过定义继承自model的类,实现对数据表的映射,支持自动验证、自动完成、关联模型和数据缓存等高级功能。1. 模型分为基础模型、高级模型和空模型三种类型;2. 使用模型时可通过create()和add()方法实现数据验证与插入;…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的命令行工具怎么用?ThinkPHP如何创建自定义命令?

    thinkphp自定义命令的实现原理是基于控制台组件的继承与多态机制。1.继承基类:所有命令需继承thinkconsolecommand类,该类定义了命令结构与生命周期。2.重写方法:需重写configure()配置命令元信息及参数选项,重写execute()实现核心逻辑。3.注册命令:在app/c…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的模板引擎怎么用?ThinkPHP如何渲染视图?

    thinkphp模板引擎通过标签语法实现数据与html分离。其核心是视图层仅负责展示,避免php与html混杂。使用时需创建模板文件(如.html),在控制器中通过assign传值,再调用fetch或display渲染。常见标签包括变量输出({$var})、条件判断({if}…{/if}…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的环境变量怎么设置?ThinkPHP如何区分开发环境?

    thinkphp环境变量设置有两种方式:.env文件和操作系统环境变量。1. 推荐使用.env文件,在项目根目录创建.env文件并添加变量如app_debug、app_env和数据库配置,通过env()函数读取,便于管理和共享;2. 也可在操作系统层面设置,windows通过“环境变量”界面,lin…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的URL重写怎么做?ThinkPHP如何隐藏index.php?

    thinkphp的url重写通过去除index.php提升url友好性和seo效果。1. apache配置:启用mod_rewrite模块,创建或编辑.htaccess文件并写入相应重写规则;2. nginx配置:在站点配置的server块中添加重写规则并重启nginx;3. thinkphp配置:…

    2025年12月5日 PHP框架
    000
  • ThinkPHP的依赖注入是什么?ThinkPHP如何实现IoC容器?

    thinkphp中依赖注入的核心是ioc容器,它通过构造函数注入等方式自动解析和管理类的依赖关系;2. 使用di能显著提升代码解耦、可测试性和可维护性,例如替换userrepository实现无需修改userservice;3. 容器通过绑定(如接口到实现、闭包绑定)和自动解析(利用反射递归注入依赖…

    2025年12月5日 PHP框架
    000

发表回复

登录后才能评论
关注微信