webdevlabs / phreak
Phreak! 最终极的劣质开发工具 :)
Requires
- illuminate/database: ^5.5
- oscarotero/psr7-middlewares: ^3.20
- php-di/php-di: ^5.4
- phroute/phroute: ^2.1
- relay/relay: ~1.0
- smarty/smarty: ^3.1
- tedivm/stash: ^0.14.1
- zendframework/zend-diactoros: ^1.3
This package is not auto-updated.
Last update: 2024-09-29 02:39:20 UTC
README
由Phroute(URL路由)、PHP-DI(依赖注入容器)、Smarty(模板引擎)、Stash(缓存库)、Zend Diactoros(请求/响应处理器)、RelayPHP(中间件调度器)、PSR7-Middlewares(PSR-7中间件集合)驱动的超轻量快速PHP框架
- Phroute(url路由)
- PHP-DI(依赖注入容器)
- Smarty(模板引擎)
- Stash(缓存库)
- Zend Diactoros(请求/响应处理器)
- RelayPHP(中间件调度器)
- PSR7-Middlewares(PSR-7中间件集合)
安装
composer create-project webdevlabs/phreak
使用内置PHP网络服务器本地运行应用
php -S localhost:8000 -t public
自动加载器
使用 命名空间 作为文件路径非常简单易懂。所有目录名称都转换为小写,文件大小写保持不变。例如
<?php
use App\Controllers\Front;
将自动加载文件 \app\controllers\Front.php
简单路由
使用 {id} 参数作为参数调用 App\Controllers\User::displayUser($id) 方法
$router->get('/users/{id}', ['App\Controllers\User','displayUser']);
控制器路由
使用适当的请求方法调用 App\Controllers\Front.php。
$router->controller('/', 'App\Controllers\Front');
- 对 http://host/login 的 GET 请求将调用 App\Controllers\Front::getLogin() 方法。
- 对 http://host/login 的 POST 请求将调用 App\Controllers\Front::postLogin() 方法。
- 对 http://host/article/some-article-uri 的 GET 请求将调用 App\Controllers\Front::getArticle($uri) 方法,其中 $uri 参数作为参数。
高级路由
过滤器
调用类 App\Models\Auth
的方法 checkLogin()
并在 return false
时中断。
$router->filter('auth', ['App\Models\Auth','checkLogin']);
通过过滤器将所有请求分组到 http://host/profile/ 下
$router->group([
'prefix'=>'profile',
'before'=>'auth'
],
function ($router) {
$router->controller('/', 'App\Controllers\Account\Profile');
});
更高级的路由可以在 Phroute 的页面上找到。
验证
public function postComment ()
{
$input = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
$val = new \System\Validation($input);
$val->addRule('name', 'Empty name field', ['required']);
$val->addRule('comment', 'Empty comment field', ['required','minLength=5']);
$val->addRule('comment', 'Comment too big', ['maxLength=500']);
if ($val->validate()) {
echo 'Comment post ok';
} else {
$this->template->assign('errors',$val->getErrors());
$this->template->display("errors.tpl");
}
}
简单控制器
<?php
namespace App\Controllers;
use System\Template;
use System\Language;
class Front
{
private $template;
private $language;
public function __construct (Template $template, Language $language)
{
$this->template = $template;
$this->language = $language;
}
public function getIndex()
{
$this->template->assign('title', 'Phreak!');
$this->template->assign('languages', $this->language->available_languages);
$this->template->display('layout.tpl');
}
}
更高级的例子可以在 'modules' 目录中找到。
事件
use System\Event;
class ... {
public function __construct (Event $event)
{
$this->event = $event;
$this->event->bind('someEventName', function () { echo "stay foolish"; });
}
public function getSome () {
$this->event->trigger('someEventName');
}
}
数据库
现在您有多种管理数据库的选项。有2个现有的数据库驱动。示例数据库包装类 DB:: 和广为人知的数据库映射器 Eloquent。
您可以直接从 config/database.php 中控制加载哪个数据库驱动程序
示例 PDO 驱动程序查询
* Result: single column
* $count = DB::column('SELECT COUNT(*) FROM `user`);
* Result: an array(key => value) results (i.e. for making a selectbox)
* $pairs = DB::pairs('SELECT `id`, `username` FROM `user`);
* Result: a single row result
* $user = DB::row('SELECT * FROM `user` WHERE `id` = ?', array($user_id));
* Result: a single row result
* $user = DB::row('SELECT * FROM `user` WHERE `id` = :varname', array(":varname"=>"some variable"));
* Result: an array of results
* $banned_users = DB::fetch('SELECT * FROM `user` WHERE `banned` = ?', array(TRUE));
* Result: any query
* $dosql = DB::query('UPDATE `settigs` WHERE `setid`=?', ['somesetid']);
* Result: insert user
* DB::insert('users', ['username'=>'test','password'=>'testpass']);
* Result: update user password where user_id = 1
* DB::update('users', ['password'=>'testpass'], '1', 'user_id');
管理数据库的新方法是 Eloquent(来自 Laravel 框架)。
《Eloquent ORM》为您提供了与数据库交互的美丽、简单的 ActiveRecord 实现。每个数据库表都有一个相应的“模型”,用于与该表交互。模型允许您查询表中的数据,以及向表中插入新记录。
phreak eloquent 使用示例可以在为演示制作的 'modules/eloq' 中找到。
完整的文档可以在 Eloquent 页面上找到。
控制台命令
您还可以通过调用控制台.php 文件来从您的控制台/crontab 执行 phreak 控制器,其中参数是控制器文件的名称。
使用适当的请求方法调用 App\Commands\SomeController.php。
php console.php SomeController
所有控制台控制器都位于“app/commands”文件夹中。文件夹位置在 'app/ConsoleController.php' 中定义,可以进行修改。