sharpdressedcodes / keletos
极简主义PHP框架
v0.1.0
2019-09-16 13:14 UTC
Requires
- php: ^7.2
- higidi/composer-phpcodesniffer-standards-plugin: @dev
- symfony/http-foundation: ^4.3
- symfony/routing: ^4.3
Requires (Dev)
README
极简主义PHP框架,旨在以最小的麻烦完成任务。
安装
composer require sharpdressedcodes/keletos
使用
至少,您需要在 application/Routes/[filename].php
内设置路由。
use Keletos\Component\Routing\Router;
use Application\Controller\Main as MainController;
Router::match(['GET', 'POST'], '/', MainController::class);
Router::get('/test/{id<\d+>?1}', function($id = -1) {
echo 'no controller!!! ' . $id;
});
Router::get('/user/{name<\w+>}', function($name) {
echo "name is $name";
}, [
'requirements' => [
'name' => '/^\w+$/',
]
]);
Router::any('*', [MainController::class, 'catchAll']);
您可以使用控制器或匿名函数作为动作。如果您只是传递一个没有方法的类,它将默认为 index
方法。
如果您选择使用控制器,则扩展 Keletos\Controller\Controller
类。例如控制器
class Main extends Controller {
public function index() {
$views[] = [
'view' => 'google-search-api',
'var' => 'content',
'viewParams' => $viewParams,
];
$this->render([
//'layout' => $this->_layoutFile,
'views' => $views,
'title' => $pageTitle,
]);
}
}
$viewParams
是传递给视图的变量。
然后创建一个索引页面
use Keletos\Component\Application\Application;
//use Keletos\Component\ConfigManager;
//use Keletos\Component\Rendering\Renderer;
//use Keletos\Component\Routing\Router;
(function() {
$basePath = dirname(__DIR__);
require_once $basePath . '/vendor/autoload.php';
require_once dirname($basePath) . '/c3.php';
//$configManager = new ConfigManager($basePath);
//$config = $configManager->getConfig();
//$renderer = new Renderer($config, ($config['debug'] ? 'Debug' : 'Main') . '.php');
//$router = new Router(['web'], $renderer, $basePath);
$application = Application::factory([
'routes' => ['web'],
'basePath' => $basePath,
//'renderer' => $renderer,
//'router' => $router,
//'configManager' => $configManager,
]);
$application->run();
})();
您甚至可以覆盖默认的 Renderer
和 Router
。
在代码的任何地方访问应用程序变量
$application = Application::instance();