以下是一个简单的PHP自建框架的实例,我们将通过以下几个步骤来构建一个基础框架:
| 步骤 | 描述 | 代码示例 |

| --- | --- | --- |
| 1. 创建框架目录结构 | 建立项目的目录结构,以便于管理和扩展。 | ```
project/
|- index.php
|- app/
|- controllers/
|- Home.php
|- views/
|- index.php
|- config/
|- database.php
```
| 2. 框架核心文件 index.php | 设置基本的路由规则和加载核心文件。 | ```
// index.php
// 定义项目根目录
define('ROOT_PATH', __DIR__ . '/');
// 加载核心文件
require ROOT_PATH . 'core/Bootstrap.php';
// 实例化Bootstrap类并调用run方法
(new ""Core""Bootstrap)->run();
```
| 3. 创建Bootstrap类 | Bootstrap类负责初始化框架和加载配置文件。 | ```
// Bootstrap.php
namespace Core;
class Bootstrap
{
public function run()
{
// 加载配置文件
$config = require ROOT_PATH . 'config/database.php';
// 初始化数据库连接
$database = new ""Core""Database($config);
// 根据路由规则加载控制器和执行方法
$router = new ""Core""Router($config['routes']);
$router->dispatch();
}
}
```
| 4. 创建数据库配置文件 | 定义数据库连接信息。 | ```
// database.php
return [
'host' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'test',
];
```
| 5. 创建数据库连接类 | 数据库连接类负责连接和操作数据库。 | ```
// Database.php
namespace Core;
class Database
{
private $conn;
public function __construct($config)
{
$this->conn = new mysqli($config['host'], $config['username'], $config['password'], $config['database']);
}
public function query($sql)
{
$result = $this->conn->query($sql);
return $result;
}
}
```
| 6. 创建路由器类 | 路由器类负责解析请求并匹配相应的控制器和方法。 | ```
// Router.php
namespace Core;
class Router
{
private $routes;
public function __construct($routes)
{
$this->routes = $routes;
}
public function dispatch()
{
$uri = $_SERVER['REQUEST_URI'];
foreach ($this->routes as $route => $controller) {
if (preg_match_all('/' . $route . '/', $uri, $matches)) {
$controller = 'App""Controllers""""' . $controller;
$action = $matches[1][0];
$controller = new $controller($this->conn);
$controller->$action();
exit;
}
}
echo '404 Not Found';
}
}
```
| 7. 创建控制器类 | 控制器类负责处理业务逻辑和视图渲染。 | ```
// Home.php
namespace App""Controllers;
use Core""Database;
class Home
{
private $conn;
public function __construct($conn)
{
$this->conn = $conn;
}
public function index()
{
// 查询数据库数据
$result = $this->conn->query('SELECT * FROM users');
// 渲染视图
include ROOT_PATH . 'app/views/index.php';
}
}
```
| 8. 创建视图文件 | 视图文件负责展示数据。 | ```
// index.php
本文由 @旧念何挽 发布在 觉装修技术网,如有疑问,请联系我们。
文章链接:http://juezx.cn/GhiGyW_vFNxQJcPMKpcaP







