您现在的位置是:首页 > 正文

安装think PHP5

2024-04-01 05:13:10阅读 2

一、安装Composer

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

下载地址:https://getcomposer.org/Composer-Setup.exe

详细介绍可看这里 https://www.kancloud.cn/thinkphp/composer/35668

安装完成后在命令控制窗口(cmd)里打入“composer”看到如下界面说明安装成功

注意:最近composer镜像存在问题,可以改成在命令行里输入下面地址然后回车。

Composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 

二、安装tp5

如果你是第一次安装的话,在命令行下面,切换到你的WEB根目录(通常是www)下面并执行下面的命令:composer create-project topthink/think=5.1.* tp5 ,后面的tp5是项目名称,意思是在www下自动生成文件夹名称为tp5的,如果想命名其他可以把tp5改成其他名称。安装成功如下:

这里我是在zzp目录下执行安装命令,所以tp5会在zzp目录下,通常你们在www目录下执行就好。

现在只需要做最后一步来验证是否正常运行。在浏览器中输入地址:

http://localhost/tp5/public/, 如果浏览器输出如图所示:

三、Tp5目录结构

tp5  WEB部署目录(或者子目录)

├─application           应用目录

│  ├─common             公共模块目录(可以更改)

│  ├─module_name        模块目录(比如Index)

│  │  ├─common.php      模块函数文件

│  │  ├─controller      控制器目录

│  │  ├─model           模型目录

│  │  ├─view            视图目录

│  │  ├─config          配置目录

│  │  └─ ...            更多类库目录

│  │

│  ├─command.php        命令行定义文件

│  ├─common.php         公共函数文件

│  └─tags.php           应用行为扩展定义文件

├─config                应用配置目录

│  ├─module_name        模块配置目录

│  │  ├─database.php    数据库配置

│  │  ├─cache           缓存配置

│  │  └─ ...           

│  │

│  ├─app.php            应用配置

│  ├─cache.php          缓存配置

│  ├─cookie.php         Cookie配置

│  ├─database.php       数据库配置

│  ├─log.php            日志配置

│  ├─session.php        Session配置

│  ├─template.php       模板引擎配置

│  └─trace.php          Trace配置

├─route                 路由定义目录

│  ├─route.php          路由定义

│  └─...                更多

├─public                WEB目录(对外访问目录)

│  ├─index.php          入口文件

│  ├─router.php         快速测试文件

│  └─.htaccess          用于apache的重写

├─thinkphp              框架系统目录

│  ├─lang               语言文件目录

│  ├─library            框架类库目录

│  │  ├─think           Think类库包目录

│  │  └─traits          系统Trait目录

│  │

│  ├─tpl                系统模板目录

│  ├─base.php           基础定义文件

│  ├─convention.php     框架惯例配置文件

│  ├─helper.php         助手函数文件

│  └─logo.png           框架LOGO文件

├─extend                扩展类库目录

├─runtime               应用的运行时目录(可写,可定制)

├─vendor                第三方类库目录(Composer依赖库)

├─build.php             自动生成定义文件(参考)

├─composer.json         composer 定义文件

├─LICENSE.txt           授权说明文件

├─README.md             README 文件

├─think                 命令行入口文件

 

标准的应用和模块目录结构如下

 

├─application           应用目录(可设置)

│  ├─common             公共模块目录(可选)

│  ├─module1            模块1目录(比如Index)

│  │  ├─common.php      模块函数文件

│  │  ├─config         模块配置目录(可选)

│  │  ├─controller      控制器目录

│  │  ├─model           模型目录(可选)

│  │  ├─view            视图目录(可选)

│  │  └─ ...            更多类库目录

│  │

│  ├─module2            模块2目录

│  │  ├─common.php      模块函数文件

│  │  ├─config         模块配置目录(可选)

│  │  ├─controller      控制器目录

│  │  ├─model           模型目录(可选)

│  │  ├─view            视图目录(可选)

│  │  └─ ...            更多类库目录

四、url访问规则

http://localhost/tp5/public/index.php/模块/控制器/操作

比如http://localhost/tp5/public/index.php/Index/index/hello就是Index模块下的Index控制器的hello方法。

五、控制器定义

控制器文件通常放在application/module/controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。我们在application\index\controller文件夹下新建Index.php文件,输入下面代码:


<?php

namespace app\index\controller;

use think\Controller;

class Index extends Controller

{
    public function hello()

    {

        return 'hello';

    }

}

​

访问URL是:

http://localhost/tp5/public/index.php/index/index/hello

六、数据库配置

数据库配置文件在tp5(项目名称)/ config/ database.php中,根据自己的实际情况配置以下几个信息:

七、视图加载

<?php

namespace app\index\controller;
use think\Controller;
use think\DB; 

class Index extends Controller
{
    public function hello()

    {
        // 不带任何参数 自动定位当前操作的模板文件来加载
        //系统会按照默认规则自动定位模板文件,其规则是:
        //当前模块(index)/view/当前控制器名(小写index)/当前操作(小写hello).html
        return $this->fetch();

    }

}

八、视图赋值

可查看 https://www.kancloud.cn/manual/thinkphp5_1/354066

assign方法

在控制器继承了系统的控制器基类的情况下,可以使用assign方法进行模板变量赋值。

namespace index\app\controller;

class Index extends \think\Controller
{
    public function hello()
    {
        // 模板变量赋值
        $this->assign('name','ThinkPHP');
        $this->assign('email','thinkphp@qq.com');
        // 或者批量赋值
        $this->assign([
            'name'  => 'ThinkPHP',
            'email' => 'thinkphp@qq.com'
        ]);
        // 模板输出
        return $this->fetch();
    }
}

在视图文件,我们只要写"{$name}"就是读取到“ThinkPHP”,写“{$email}”就能读取到“thinkphp@qq.com”

九、视图模板解析

可查看 https://www.kancloud.cn/manual/thinkphp5_1/354071

十、常用数据库查询

单条查询

// table方法必须指定完整的数据表名,下面查询id为1的单条数据

Db::table('think_user')->where('id',1)->find();

最终生成的SQL语句可能是:

SELECT * FROM `think_user` WHERE  `id` = 1 LIMIT 1

列表查询

下面表示查询status为1的列表:

Db::table('think_user')->where('status',1)->select();

最终生成的SQL语句可能是:

SELECT * FROM `think_user` WHERE `status` = 1

添加

$data = [‘name’=> ‘张三’, sex=> '男'];

Db::name('user')->insert($data);

以上语句表示插入user表字段name为张三,sex为男的语句。

修改

Db::name('user')->where('id', 1)->update(['name' => '李四']);

表示把user表里id为1的数据,name改为李四。

删除

// 根据主键(默认是id)删除

Db::table('think_user')->delete(1);

Db::table('think_user')->delete([1,2,3]);

// 条件删除   

Db::table('think_user')->where('id',1)->delete();

Db::table('think_user')->where('id','<',10)->delete();

最终生成的SQL语句可能是:

DELETE FROM `think_user` WHERE  `id` = 1

DELETE FROM `think_user` WHERE  `id` IN (1,2,3)

DELETE FROM `think_user` WHERE  `id` = 1

DELETE FROM `think_user` WHERE  `id` < 10

更多查询请看:

https://www.kancloud.cn/manual/thinkphp5_1/353999

网站文章

  • java:CAS、ABA问题详解

    1、java中的原子性操作所谓原子性操作,是指执行一系列操作时,这些操作要么全部执行,要么全部不执行,不存在只执行其中一部分的情况。2、CAS方法CAS即Compare and Swap,其是JDK提...

    2024-04-01 05:13:02
  • 系统错误:&amp;H8007007E(-2147024770)。 找不到指定的模块。解决

    系统错误:&amp;H8007007E(-2147024770)。 找不到指定的模块。 就很发呆,以前就正常。 然后发现多个ocx,那肯定是这个组件没有注册了。运行了vb库失败后,便从程序里复制了MSINET.OCX,放到了c:/windows/systems32 下面 然后在开始运行里输入:regsvr32 MSINET.OCX,进行注册 提示注册成功后,完成 程序...

    2024-04-01 05:12:20
  • layui踩坑记录之form表单下的button按钮默认自动提交

    layui踩坑记录之form表单下的button按钮默认自动提交

    因此,当我们在使用form的时候,如果没有添加标准的提交按钮,会自动默认把其他的普通按钮认为是提交按钮,因为button的type默认值为“submit”。其实就是使用form的时候,应该对应有一个提...

    2024-04-01 05:12:12
  • 加快局域网访问时间的方法策略

    法一:将网卡调至全速按下Win+Pause/Break键,单击“硬件”标签,再单击“设备管理器”从而打开“设备管理器”,双击“网络适合器”下相应网卡,在打开窗口中单击“高级”标签,选中Link Spe...

    2024-04-01 05:12:06
  • 微信小程序-处理多个文件上传

    一、方法的封装/** * 采用递归的方式上传多个文件 * filePaths 要上传的资源 * results 上传成功返回的数据 * successUp 成功个数 * failUp 失败个数 * index 上传文件的下标 */function uploadOneByOne(filePaths = [], results = [] , successUp =...

    2024-04-01 05:11:59
  • SQL过滤与应用过滤如何选择

    SQL过滤与应用过滤进行复杂查询的时候,数据可以通过SQL过滤,也可以在应用层进行过滤。应当优先采用哪一种过滤方式呢?通常来说,优化数据库后可以更快速有效的对数据进行过滤。使用客户端进行过滤的方法通常是:sql的select语句为客户端应用检索出超过实际所需的数据,然后客户端代码对返回数据进行循环提取出需要的行。使用客户端应用进行过滤时,有三个不好的影响:1.会极大的影响应用的性能2....

    2024-04-01 05:11:19
  • 系统管理员设置了系统策略禁止此安装怎么办

    系统管理员设置了系统策略禁止此安装怎么办

    解决措施

    2024-04-01 05:11:11
  • vue项目开发全局组件笔记

    在开发vue项目时,经常会用到element UI组件,在全局使用像message,toast,alert等组件得时候会很方便,但是在开发需要UI制定的项目时,就不能使用element UI了,这时就需要自己去开发属于自己的组件库了。具体的开发方法官网提供了。下面我们就根据官网提供的方法来开发属于我们自己的alert警告组件首先我们要在src/components文件夹下创建一个alert文...

    2024-04-01 05:11:04
  • 服务器有新消息主动推送给客户端浏览器

    服务器有新消息主动推送给客户端浏览器

    前言 通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客...

    2024-04-01 05:10:23
  • 算法入门之排序算法

    算法入门之排序算法

    算法入门之排序算法堆排序堆排序相较于堆排序这种排序算法,堆这种数据结构更为重要/** * @Author Jason * @Date 2021/9/11 11:09 上午 * @Description...

    2024-04-01 05:10:14