• Astrology PHP 框架


    1、Web 服务器配置

    PHP 支持

    URL Rewrite、PATH_INFO

    2、环境需求

     PHP 7.2+

    扩展:gettext

    3、目录结构

    + src

       | - autoload.php

       | + Astrology

           | - Start.php

           | - Kernel.php

           | - Controller.php

           | - Database.php

           | - View.php

       | + Anfora

           | - Autoload.php

           | + Autoload

               | - ClassLoader.php

       | + DbTable

       | + Extension

    + app

       | - bootstrap.php

       | - config.php

       | + Index

       | + _App

          | + Controller

              | - _Controller.php

              | - Index.php

          | + Model

          | + View

              | + _Controller

                  | - _NotFound.php

                  | - index.mobi..php

                  | - index.php

              | + _helper

                  | - footer.php

              | + _layout

                  | - default.mobi..php

                  | - default.php

              | + Index

    + web

       | - .htaccess

       | - index.php

    4、入口文件

    web/index.php

    require_once __DIR__ . '/../app/bootstrap.php';
    new \Astrology\Start();

    5、引导文件

    app/bootstrap.php

    define('APP_ROOT', realpath(__DIR__));
    define('ANFORA_AUTOLOAD', 0);
    
    if (ANFORA_AUTOLOAD) {
        require APP_ROOT . '/../src/autoload.php';
    } else {
        require APP_ROOT . '/../vendor/autoload.php';
    }
    
    include_once 'function.php';

    6、自动加载类

    src/autoload.php

    require_once __DIR__ . '/Anfora/Autoload.php';
    return Anfora_Autoload::getLoader();

    7、运行

    src/Astrology/Start.php

    class Start extends Kernel
    {
        public function __construct()
        {
            $this->loadConfig();    
            $this->initRoute();     
            $this->loadController();
        }
     
        public function loadConfig()
        {
            $GLOBALS['CONFIG'] = include_once APP_ROOT . '/config.php';
     
            /* 这里获取配置中的默认语言、客户端语言... */
            /* 使用 gettext 扩展、没有的话用 PHP 数组代替 */
             
            @$GLOBALS['LANG'] = include_once $directory . "/$locale/LC_MESSAGES/$text_domain.php";
        }
    }

    8、主内核

    class Kernel
    {
        public function __construct()
        {
            /* REQUEST_URI 修正 */
            /* 开启缓存、php_errormsg 和 php.ini 信息、客户端设备检测 */
        }

    public function initRoute() { /* 默认路由设置 */ /* 从 REQUEST_URI、PATH_INFO、QUERY_STRING(m, c, a 或 r)获取路由信息 */ /* 匹配路由规则 */ /* 模块和控制器异常处理 */ } public function loadController() { /* 添加 Composer 加载规则 */ /* 检测模块和控制器、引入控制器 */ } }

    9、控制器原型

    class Controller
    {
        public function __construct()
        {
            /* 设置动作方法 */
            /* 是否开启 session */
        }
    
        public function run($method = null)
        {
            /* 执行方法 */
        }
    
        public function _NotFound()
        {
            /* 全局未找到动作 */
        }
    
        public function _redirect($url = '/', $second = null, $prefix = null)
        {
            /* 几种重定向 */
        }
    
        public function __destruct()
        {
            /* 是否自动运行 */
            /* 是否渲染页面 */
            /* 输出格式 */
        }
    }
  • 相关阅读:
    操作Redis--hash/key-value
    Coverage数据构成
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/wudi/p/8506442.html
Copyright © 2020-2023  润新知