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()
{
/* 是否自动运行 */
/* 是否渲染页面 */
/* 输出格式 */
}
}

Astrology PHP 框架的更多相关文章

  1. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. 旺财速啃H5框架之Bootstrap(五)

    在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...

  4. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  5. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  6. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  7. 旺财速啃H5框架之Bootstrap(四)

    上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

  8. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  9. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

随机推荐

  1. react 关闭eslint 配置

    在 package.json 中修改为一下 "eslintConfig": { "extends": "react-app", " ...

  2. Numpy一文全了解

    1,Numpy是一个python包,它是一个由多维数组对象和处理数组的例程集合组成的库. 2.   Numpy的操作:(1)数组的算数和逻辑运算 :(2)傅里叶变换和用于图形操作  (3)与线性代数有 ...

  3. webpack多入口优化

    最近接手的项目是公司之前搭的多页面应用脚手架,然后到现在入口页面大大小小超过半百了,然后每次更新完配置之后,重启页面就贼拉卡,实在太影响开发效率了,于是开始优化呗. 最开始发现如果你想要让加载速度变快 ...

  4. spring boot整合websocket

    转载自:https://www.cnblogs.com/GoodHelper/p/7078381.html 一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日 ...

  5. API Test WebApiTestClient工具安装及使用

    一.guget安装: 1.解决方案右键-管理解决方案的nuget程序包打开如下图: 搜索WebApiTestClient,然后选择查询出的项目,右边点击安装即可:   2.安装会有如下图提示: 确定即 ...

  6. dskinlite自适应dpi

    调试了好久,mfc CDialog终于搞定,付费支持,qq: 80101277 效果图:

  7. 网址导航18B

    [名站] 百度 网易 腾讯 新华 中新 凤凰 [新闻] 联合早报  南方周末  澎湃新闻 [系统] 宋永志 蒲公英 技术员 秋叶系统 装机网 系统之家 [软件] 星愿浏览器 暴风激活 贱人工具箱 微P ...

  8. Kudu基本操作及概念

    Kudu:    针对 Apache Hadoop 平台而开发的列式存储管理器. 使用场景:    适用于那些既有随机访问,也有批量数据扫描的复合场景.    高计算量的场景.    使用了高性能的存 ...

  9. eclipse Maven Dependencies 黑色背景说明

    记录工作点点滴滴,大到系统设计,源码分析,小到IDE设置. 这里要说的是eclipse中Maven Dependencies 为什么有些jar用黑色背景,如下图所示: 网上很多人说jar包在本地仓库不 ...

  10. 博客七----tensorflow-gpu安装满满填坑

    具体内容见我的开源中国教程:https://my.oschina.net/u/3770644/blog/3043073 因为编写习惯原因,我的大多数详细教程在开源中国中.有兴趣的大家打开连接就好 强调 ...