coreyolson / framework
一个简约的PHP框架
Requires
- php: >=7.0.0
This package is auto-updated.
Last update: 2024-09-04 12:27:50 UTC
README
一个简约的PHP框架
设计轻量级、快速且易于使用。提供现代网站的基本要素;例如,简单的请求路由到控制器,然后可以调用模型或视图。一个简约的PHP 7.0+框架。
入门
所有请求通过 index.php 路由到控制器。应用和框架逻辑位于 application 文件夹中。子文件夹标记为:控制器、助手、库、模型和视图,均在同一主 application 文件夹内。
快速安装
无需设置。 mod_rewrite 可选,但理想情况下建议启用。所有请求都通过 public/index.php。根据需要修改 public/index.php。没有 mod_rewrite 的 URL 为:/index.php/controller/method/param1/param2/
使用 PHP Composer 安装
composer create-project coreyolson/framework folder
建议的重写规则
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond \$1 !^(.*\..*) [NC]
RewriteRule ^(.*)$ ./index.php/\$1 [L]
构建网站或Web应用的结构
路由逻辑放在 controllers 中,应用逻辑放在 models 中,而 views 包含模板。可以使用替代路由(例如,通过另一个文件包含 Framework.php),同时仍然可以访问库、助手和视图。
路由
框架通过 {controller}/{action}/{param1}/{param2} 路由URL。打印内部方法 f::info()
提供更多见解。默认控制器是 home.php,默认操作/方法为 index,并可更改。框架查找 before_{method}()
和 after_{method}()
。这些可以通过在 public/index.php 中传递您所需的偏好设置来更改,例如通过 framework::index('home/index', 'before/after');
。
GET example.com/project/list
路由到 project.php 控制器,或 404错误 如果控制器不存在。
- 如果存在,则运行
get()
方法 - 如果存在,则运行
before()
方法 - 如果存在,则运行
get_before()
方法 - 如果存在,则运行
before_list()
方法 - 如果存在,则运行
before_get_list()
方法 - 运行
get_list()
方法,或 404错误 如果方法不存在。 - 如果存在,则运行
after_get_list()
方法 - 如果存在,则运行
after_list()
方法 - 如果存在,则运行
get_after()
方法 - 如果存在,则运行
after()
方法
通过打印 f::info()
获取内部框架和路由信息。
基本用法
使用 f::method()
会有轻微的性能损失,但提供了开发中的便利。为了最佳性能,请使用完全限定的名称访问类和方法;例如,使用 Array Helper 的 \helpers\arr::keys();
。
自动加载任何助手或库
f::class()->method(); // f::arr(), f::benchmark(), f::page(), f::file()
使用控制器、模型、助手或库
f::controller('home')->get_index(); // controllers\home::get_index();
f::model('template')->demo(); // models\template::demo();
f::helpers('arr')->keys(); // helpers\arr::keys();
f::library('benchmark')->mark(); // libraries\benchmark::mark();
使用视图
echo f::view('filename'); // view::echo('filename');
使用动态视图
f::view('filename', ['var' => 'val']); // view::return('filename', ['var' => 'val']);
高级用法
根据需要,在 public/index.php 中添加自定义路由;例如,route::verb('/{pattern}', function () { //code });
可以使用任何HTTP动词,即使是非标准动词。有两个框架特定的动词 route::any
和 route::port
,它们具有匹配 任何 HTTP动词的独特功能,并在匹配 端口 请求时立即运行框架路由。
GET 请求到 example.com/users/
route::get('/users/', function () {
//code
}); // Continues processing
POST 请求到 example.com/users/edit/
route::post('/users/edit/', function () {
//code
}, true); // Stops processing on TRUE
PORT 请求到 example.com/internals/
route::port('/internals/', function () {}); // Switches to framework:index() routing
定时任务配置
该框架可以作为cron调度器使用;然而,仍然需要在web服务器上配置cron任务。以下代码每分钟运行一次框架的cron调度器;它会在 _application/controllers/cron 文件夹中查找计划运行的控制器。使用框架的调度选项来配置所需的时间和频率。
(crontab -l 2>/dev/null; echo "# * * * * * wget https:///?_cron -O /dev/null") | crontab -
注意:框架必须能够写入 storage/ 文件夹,以使Crons能够工作;或者,您可以在 _storage/ 下手动创建一个可写文件 _storage/cron.json;如果使用不同的 _cron配置/文件夹,请相应调整。
框架中的示例Cron任务/控制器
<?php
namespace controllers\_cron;
class example
{
public static $options = [
'dayOfWeek' => 'friday',
'frequency' => 'everyFiveMinutes',
'between' => ['1:00 am', '2:30 am'],
];
public static function index()
{
// Code here
}
}
许可证
在MIT许可证下发布。所有贡献均在MIT许可证下发布。