raahim / pine
最小化PHP框架
Requires
- php: >=8.2
- symfony/inflector: ^5.4
- toolkit/pflag: ^2.0
- vlucas/phpdotenv: ^5.5
Requires (Dev)
- symfony/var-dumper: ^7.1
This package is auto-updated.
Last update: 2024-10-03 09:38:39 UTC
README
关于Pine
Pine是一个最小化的PHP Web框架
重要
这仅仅是一个爱好项目,并且在任何方面都不完整。
如果你正在寻找一个适用于生产的框架,请查看Laravel
这不应该在生产环境中使用。
另一方面,如果你发现任何问题(我认为有很多),请在github上创建一个问题,这样我可以看看。
先决条件
- PHP 8.2.10
- Composer 2.6.2
- Node 20.6.1
- pnpm 9.1.1
安装
首先克隆仓库
$ git clone https://github.com/raahimfareed/pine.git
安装composer包
$ composer install
可选:如果你打算使用ViteJS,你可以安装所有js包
我们使用pnpm,但你也可以使用任何node的包管理器
$ pnpm install
运行PHP服务器
$ php -S localhost:8000
这将在本地的8000端口运行一个PHP服务器
在新的终端窗口中,启动vite
$ pnpm run dev
路由
你可以在src/routes.php
中创建更多的路由
目前,仅支持GET和POST方法,未来将添加更多方法。
视图和Leaf模板
视图基本上是添加了模板功能的HTML文件。
你可以在src/views
目录中创建更多视图,格式为filename.leaf.html
所有视图文件都应该有扩展名.leaf.html
在路由中渲染视图时,你需要输入相对于视图文件夹的视图路径,且不带扩展名
例如,以下是一个项目结构(这是完整的项目结构,为了示例,不必要的目录和文件被隐藏了)
.
├── src
│ ├── Controllers
│ │ └── SampleController.php
│ ├── resources
│ │ ├── css
│ │ │ └── index.css
│ │ └── js
│ │ └── index.js
│ ├── routes.php
│ └── views
│ ├── controller.leaf.html
│ └── index.leaf.html
└── vite.config.js
我们有index.leaf.html
我们可以简单地渲染这个
Route::get("/", function () { return new View("test"); });
在页面上显示数据
你可以使用View类的可选第二个参数将数据传递到模板中。
看前面的例子,我们会写成这样
Route::get("/", function () { return new View("test", ["name" => "Chuck Norris"]); });
然后你可以在leaf文件中访问它
<h1>{{name}}</h1>
CSS和JS
Pine为CSS和JS分别提供public/style.css
和public/main.js
文件
如果你需要这些文件,只需要在leaf文件中添加@css和@js指令即可。
如果你使用Vite,你需要编辑src/resources/js/index.js
和src/resources/css/index.css
,因为Vite会自动为你打包js和css,你仍然需要@css和@js来将其添加到HTML中
控制器
裸骨控制器已实现,文档需要更新。
迁移和模型
注意
迁移和模型尚未实现,它们将在未来添加,包括数据库助手。