📅  最后修改于: 2023-12-03 14:39:21.551000             🧑  作者: Mango
asd - PHP 是一个基于 PHP 开发的轻量级 MVC 框架。它的设计目标是简单易用,同时具备足够的灵活性和扩展性,方便开发者快速构建高性能的 Web 应用。
asd - PHP 框架的安装非常简单,只需要执行以下命令即可:
composer create-project asd-php/asd myapp
然后到应用目录中运行以下命令启动内置的 Web 服务器:
php -S localhost:8000 -t public
现在可以在浏览器中访问 http://localhost:8000 ,看到欢迎界面,说明 asd - PHP 框架已成功安装。
asd - PHP 框架的路由非常灵活,支持各种不同的路由规则。默认情况下,框架使用基于 URL 路径的路由规则。
/
显示默认欢迎页面/users
显示用户列表/user/{id}
显示指定用户详情,{id}
为动态路由参数以上路由规则可以在 app/routes.php
文件中定义,例如:
use App\Controllers\HomeController;
use App\Controllers\UserController;
$router->get('/', [HomeController::class, 'welcome']);
$router->get('/users', [UserController::class, 'index']);
$router->get('/user/{id}', [UserController::class, 'show']);
此外,还可以定义类似于 RESTful 风格的路由规则:
GET /users
显示用户列表GET /users/{id}
显示指定用户详情,{id}
为动态路由参数POST /users
创建新用户PUT /users/{id}
更新指定用户DELETE /users/{id}
删除指定用户这些路由规则可以通过 Route
类中的 RESTful 方法实现:
use App\Controllers\UserController;
$router->rest('users', UserController::class);
控制器是 MVC 框架中的关键组件,用于接收和处理用户请求,并返回响应。在 asd - PHP 框架中,控制器可以通过命名空间来组织,按照 RESTful 风格的路由规则,一个资源对应一个控制器类。
例如,UserController
控制器用于处理 /users
和 /user/{id}
路由:
namespace App\Controllers;
use Asd\Http\Request;
use Asd\Http\Response;
class UserController
{
public function index(Request $request): Response
{
// 处理用户列表逻辑
}
public function show(Request $request, int $id): Response
{
// 处理指定用户详情逻辑
}
public function create(Request $request): Response
{
// 处理创建新用户逻辑
}
public function update(Request $request, int $id): Response
{
// 处理更新指定用户逻辑
}
public function delete(Request $request, int $id): Response
{
// 处理删除指定用户逻辑
}
}
asd - PHP 框架采用轻量级的模板引擎,可以方便地实现模板的继承、变量替换、循环遍历等功能。
模板文件通常放在 app/views
目录下,文件名采用 .html
后缀。下面是一个简单的模板示例:
<!DOCTYPE html>
<html>
<head>
<title>{title}</title>
</head>
<body>
<h1>{title}</h1>
<ul>
{% for user in users %}
<li>{{ user }}</li>
{% endfor %}
</ul>
</body>
</html>
该模板中包含一个标题和一个用户列表,使用双括号语法 {{ }}
输出变量,使用单括号语法 {% %}
表示控制语句。
渲染模板可以使用 View
类中的 render
方法:
use Asd\View;
$html = View::render('welcome', [
'title' => 'Hello, world!',
'users' => ['Alice', 'Bob', 'Charlie'],
]);
asd - PHP 框架内置了一个简单的数据库 ORM 接口,用于实现 CRUD 操作。默认情况下,框架采用 PDO 连接 MySQL 数据库,也可以自行扩展支持 PostgreSQL 等数据库。
ORM 接口定义了常见的数据操作方法,例如:
namespace Asd\Database;
interface RepositoryInterface
{
public function all();
public function find(int $id);
public function create(array $attributes);
public function update(int $id, array $attributes);
public function delete(int $id);
}
可以通过继承 Repository
类来实现具体的数据操作:
namespace App\Repositories;
use Asd\Database\Repository;
class UserRepository extends Repository
{
protected string $table = 'users';
}
在控制器中调用数据操作方法即可:
namespace App\Controllers;
use App\Repositories\UserRepository;
use Asd\Http\Request;
use Asd\Http\Response;
class UserController
{
protected UserRepository $repository;
public function __construct(UserRepository $repository)
{
$this->repository = $repository;
}
public function index(Request $request): Response
{
$users = $this->repository->all();
return view('users.index', [
'users' => $users,
]);
}
public function show(Request $request, int $id): Response
{
$user = $this->repository->find($id);
return view('users.show', [
'user' => $user,
]);
}
public function create(Request $request): Response
{
$attributes = $request->input();
$user = $this->repository->create($attributes);
return redirect('/users/' . $user->id);
}
public function update(Request $request, int $id): Response
{
$attributes = $request->input();
$this->repository->update($id, $attributes);
return redirect('/users/' . $id);
}
public function delete(Request $request, int $id): Response
{
$this->repository->delete($id);
return redirect('/users');
}
}
asd - PHP 框架的扩展性非常强,支持使用第三方库、组件、中间件等方式扩展功能。
例如,可以集成 Eloquent ORM 来替换框架自带的 ORM 接口:
composer require illuminate/database
然后需要创建一个适配器类来实现 RepositoryInterface
接口:
namespace App\Database;
use Asd\Database\RepositoryInterface;
use Illuminate\Database\Eloquent\Model;
class EloquentAdapter implements RepositoryInterface
{
protected Model $model;
public function __construct(Model $model)
{
$this->model = $model;
}
public function all()
{
return $this->model->all();
}
public function find(int $id)
{
return $this->model->findOrFail($id);
}
public function create(array $attributes)
{
return $this->model->create($attributes);
}
public function update(int $id, array $attributes)
{
$record = $this->find($id);
$record->update($attributes);
}
public function delete(int $id)
{
$this->model->destroy($id);
}
}
然后在控制器中使用 EloquentAdapter
来执行数据操作:
namespace App\Controllers;
use App\Database\EloquentAdapter;
use App\Models\User;
use Asd\Http\Request;
use Asd\Http\Response;
class UserController
{
protected EloquentAdapter $repository;
public function __construct(EloquentAdapter $repository)
{
$this->repository = $repository;
}
public function index(Request $request): Response
{
$users = $this->repository->all();
return view('users.index', [
'users' => $users,
]);
}
public function show(Request $request, int $id): Response
{
$user = $this->repository->find($id);
return view('users.show', [
'user' => $user,
]);
}
public function create(Request $request): Response
{
$attributes = $request->input();
$user = $this->repository->create($attributes);
return redirect('/users/' . $user->id);
}
public function update(Request $request, int $id): Response
{
$attributes = $request->input();
$this->repository->update($id, $attributes);
return redirect('/users/' . $id);
}
public function delete(Request $request, int $id): Response
{
$this->repository->delete($id);
return redirect('/users');
}
}
asd - PHP 框架是一个非常轻量级的 MVC 框架,简单易用,同时具备足够的灵活性和扩展性。它采用 PHP 原生语法和设计模式,可以快速构建高性能的 Web 应用,并支持使用第三方组件和库来扩展功能。如果你不喜欢重量级的框架,那么 asd - PHP 可能是一个不错的选择。