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. java 与 CDH kafka集成

    本文主要是通过在网上找到的例子进行演示: 一.说明      开发环境如下:      idea + jdk 1.8 + maven      maven 中引用的架包如下: 二. 生产者 impor ...

  2. Java框架spring Boot学习笔记(五):Spring Boot操作MySQL数据库增、删、改、查

    在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...

  3. React Router的Route的使用

    Route 是 React Router中用于配置路由信息的组件,每当有一个组件需要根据 URL 决定是否渲染时,就需要创建一个 Route. 1) path 每个 Route 都需要定义一个 pat ...

  4. 转载:让Windows Server 2012r2 IIS8 ASP.NET 支持10万并发请求

    由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误. 为了避免这样的错误,我们根据相关文档调整了设置,让服务器从设置上支 ...

  5. python跨平台注释

    使python程序运行在window以外的平台上 !#  user/bin/python

  6. max_delay/min_delay和input_delay/output_delay

    今天在使用DC设置随路时钟的时候发现里两个比较容易混淆的设置:max_delay/min_delay和input_delay/output_delay. 1)max_delay/min_delay设置 ...

  7. POJ-2236.WireleseNetwork.(并查集)

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 43199   Accepted: 178 ...

  8. python: 爬取[博海拾贝]图片脚本

    练手代码,聊作备忘: # encoding: utf-8 # from __future__ import unicode_literals import urllib import urllib2 ...

  9. Ubuntu ROS

    设置你的sources.list 将电脑设置为接受来自packages.ros.org的软件 sudo sh -c 'echo "deb http://packages.ros.org/ro ...

  10. xcode更换启动图显示空白launchImg

    launchImg图片每次更换使用不同名字, 放在项目里面,不要放在 Assets.xcassets 里面,不然会有xcode缓存问题