极简主义PHP框架

v0.1.0 2019-09-16 13:14 UTC

This package is auto-updated.

Last update: 2024-09-17 00:31:46 UTC


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();

})();

您甚至可以覆盖默认的 RendererRouter

在代码的任何地方访问应用程序变量

$application = Application::instance();