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. 安装软件,遇到弹框Windows Installer Coordinator,一直循环卡在这个弹框处

    转载自https://www.cliftonsystems.co.uk/fixing-windows-installer-coordinator-loop/ 复制粘贴原文内容,以防将来访问不到原网页了 ...

  2. CentOS7 PHP+Redis实现Session共享

    先yum简单的安装redis wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/epel-7.repo ...

  3. NIO学习笔记

    零.前言 这里整理摘录了我了解NIO的一些笔记. 参考资料: 1.深入浅出NIO之Channel.Buffer 2.深入浅出NIO之Selector实现原理 3.Java NIO vs. IO 一.N ...

  4. P和C

    import tensorflow as tf import numpy as np import math import keras from keras.layers import Conv2D, ...

  5. Unity Awards 2018最佳资源

    好的工具与资源,将帮助你的开发,达到事办功倍,今天我们将为大家介绍荣获Unity Awards 2018最佳资源的获奖作品. 最佳艺术工具:Aura - Volumetric Lighting Aur ...

  6. Jmeter Distributed (Remote) Testing: Master Slave Configuration

    What is Distributed Testing? DistributedTestingis a kind of testing which use multiple systems to pe ...

  7. [leetcode]68. Text Justification文字对齐

    Given an array of words and a width maxWidth, format the text such that each line has exactly maxWid ...

  8. WMI参数介绍

    Win32_DiskDrive 硬盘 参数说明 vailability  --设备的状态.BytesPerSector  --在每个扇区的物理磁盘驱动器的字节数.Capabilities  --媒体访 ...

  9. centos7 安装部署zabbix

    由于zabbix提供集中的web监控管理界面,因此服务在web界面的呈现需要LAMP架构支持. php 连接mysql服务,因为7版本mysql要收费,所以我们安装mariadb, 一.安装LAMP环 ...

  10. 子元素z-index高于父元素兄弟元素z-index被遮挡问题

    问题:最近在写样式时,遇到一个这样的问题,子元素的z-index值大于父元素兄弟元素z-index值,结果子元素超出父元素部分被父元素兄弟元素遮挡解决:将父元素的z-index值设置为大于兄弟元素z- ...