thinkphp8使用指南

URL访问模式

1. 单应用URL

http://serverName/index.php/控制器/操作/参数/值…
http://serverName/index.php/应用/控制器/操作/参数/值…
  • 如果开启多应用的话,URL比单应用多一个 应用 路径,其它一致;

05. 内.外置服务器

1. 启动内置

  • 在手册命令行 -> 启动内置服务器,有 php think run 启动的服务器介绍;
  • 启动后直接输入:127.0.0.1:8000 或 localhost:8000 或 www.tp.com:8000 访问;
  • 停止内置服务器,在命令行使用 ctrl + c

2. 启动phpEnv

  • 不管是本地的外置服务器集成环境phpEnv,还是以后要部署到远程服务器,都需要配置;
  • 这里需要配置的重点就是伪静态,我们不启动内置服务器,只用外置访问试试;
  • 注意:这里外置服务器,在第一课我们已经创建了 端口为 80 的 www.tp.com;
  • 现在,直接访问试试?但出现了如下图的错误:

  • 我们在 www.tp.com 目录下创建一个index.html或index.php索引文件,访问后:

    3. 配置目录

  • 在第一节课,我们创建的启动目录是 www.tp.com ,但目前知道这个目录下没有 index.php;

  • 在手册的 基础 -> 目录结构 中 public 目录 解释为:WEB目录(对外访问目录);
  • 并规范到:在实际项目部署中,确保只将 public 对外访问;
  • 所以,我们将phpEnv站点配置目录设置为:www.tp.com/pubic 即可;
  • 至于http.conf、伪静态和.htaccess等配置信息,默认情况下支持都用,后续需要配置再说;# 06. 控制器的定义

1. 定义方式

  • 控制器:顾名思义MVC中的C,即逻辑控制定义;

  • 默认在app\controller下编写对应的控制器类文件,如果想改默认目录:

    // 访问控制器层名称
    "controller_layer"      => "controller",
    
  • 类名和文件名大小写保持一致,并采用驼峰式(首字母大写);

    // app\controller\User.php
    namespace app\controller;  class User
    {
        public function index()
        {
            return "用户";
        }
    
        public function login()
        {
            return "登录成功!";
        }
    }
    
  • http://www.tp.com:8000/Index.php/helloworld

  • http://www.tp.com:8000/Index.php/hello_world

    namespace app\controller;  class HelloWorld
    {
        public function index()
        {
            return "index";
        }
    }
    

    2. URL重写

  • URL重写可以省去 index.php 入口文件的键入,默认情况下内置服务器支持重写;

    http://www.tp.com:8000/User

  • 而外置服务器,比如phpEnv,省略了入口文件,则出现如下问题:

    image-20231008153530630

  • 查看手册,根据它URL重写的修改方案(Apache),需要修改.htaccess最后一行:

    #RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]  Apache替换成下面一行
    RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
    

    image-20231008161340527

  • 备注:不同的环境、服务器等等都会有千奇百怪的问题,努力搜索解决即可;

  • 如果实在解决不了,请就用 php think run 内置服务器就了,省事。
  • 到时候部署到真实服务器环境,再折腾。。。### 3. 配置渲染

  • 如果你想避免引入同类名时的冲突,可以 config\route.php 设置控制器后缀:

    // 是否使用控制器后缀
    // 此时,User.php 就必须改成 UserController.php,并类名也需要增加后缀
    "controller_suffix"  => true,
    
  • ThinkPHP 直接采用方法内 return 返回的方式直接就输出了;

  • 如果需要使用 json 输出,直接采用 json 函数;

    // json输出,不同浏览器美化样式不同,我这里用的FireFox
    public function json()
    {
        return json(["name" => "王二狗", "age" => 25, "gender" => "男"]);
    }
    
  • 不推荐使用 die、exit 等 PHP 方法中断代码执行,推荐助手函数 halt();

    halt("中断测试");