php

thinkphp入口文件

2023-10-10

入口文件位于public目录下面,由于直接使用composer的自动加载机制,因此框架核心已经不再使用Loader类了而是改为加载composer的autoload文件。


秉承ThinkPHP大道至简的原则,入口文件依然非常之简单:


namespace think;


require __DIR__ . '/../vendor/autoload.php';


// 执行应用并响应

(new App())->run()->send();

注意每一个入口文件在新版里面总是对应一个应用,有意思的是,不同的应用入口文件除了文件名不同外代码可能完全一样(会自动绑定到文件名对应的应用)。


如果你的文件名和应用名不一致,那么可能需要略微调整如下:

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行应用并响应

(new App())->name('app_name')

    ->run()

    ->send();

think\App类还提供了很多的设置方法,都可以在run之前调用。这个有兴趣深入了解的可以通过源码查看。


由于新版本一个入口文件对应一个应用,如果你希望保持5.1版本的URL形式不变,直接访问不同的应用,一个最简单的办法就是设置Apache的.htaccess文件。


<IfModule mod_rewrite.c>

  Options +FollowSymlinks -Multiviews

  RewriteEngine On


  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteRule ^([a-z]+)/(.*)$ $1.php/$2 [QSA,PT,L]

</IfModule>

其它的WEB服务器环境可以参考修改。