lexus27/jungle

Jungle PHP 框架

0.1.41 2016-11-10 03:00 UTC

README

v0.1.6 框架遵循以下通用标准

  • 分层-MVC(hmvc) 架构
  • 使用基于属性的访问控制 (ABAC) 标准进行访问控制
  • ORM 支持全局可重用对象、继承方案、动态字段 Schema 类关系
  • mca-系统中根据数据路由生成链接

模块控制器操作 (MCA)

应用程序骨架系统,具有一系列目标以确保开发者的便利性,该主题在路径设计中最为重要

安装

Git
git clone https://github.com/lexus27/Jungle.git
Composer
composer require lexus27/jungle
WEB 服务器文件系统结构

文件系统结构可能是个性化的,但为了开始工作,可以将其视为以下基本结构

/core
    /App
        /_cache (reserved! for application auto generate)
        /_log (reserved! for application auto generate)
        /Model
        /Modules
        /Services
        /Strategies
        /Views
        Application.php
    /Jungle (Примерное расположение фреймворка)
/public_html
    /assets (custom use)
    /index.php
    /.htaccess - (if apache webserver used)
  • /core 目录用于存储源代码:应用程序(/App)、库和框架(/Jungle)

  • /core/App/ 应用程序服务目录(兼容 PSR-4 命名空间和自动加载)

  • /core/App/_log/ 自动生成的目录,用于存储系统日志

  • /core/App/_cache/ 自动生成的目录,用于存储各种文件缓存

  • /core/App/Model/ ORM 模型专用目录,模型可以在 namespace App/Model 命名空间中定义,因此目录名称不具有技术意义,仅具有语义意义

  • /core/App/Modules/ 目录用于组织应用程序控制器结构

  • /core/App/Services/ 目录用于存储应用程序中使用的重定义或自定义 JF 组件(具有语义意义)

  • /core/App/Strategies/ 目录用于存储请求策略,其中包含以策略名称命名的类

  • /core/App/Application.php 应用程序骨架类,可以重定义服务相对路径等,例如(StrategiesModules

  • /core/Jungle 框架示例位置(以下代码示例将基于此位置)

  • /public_html Web 服务器根目录,其中包含公开可访问的文件,包括应用程序的入口点

  • /public_html/index.php 应用程序入口点,此文件不依赖于任何内容,在其中连接自动加载器和应用程序

入口点 (/public_html/index.php)

传统上,为了工作于 URL 重写,Web 服务器必须支持重写(mod_rewrite)

<?php
//use absolute path


/** 
 * 0. Optional defines contsants for comfort 
 * -----------------------------------------
 */

// similarly realpath('../../core/Jungle/Jungle')
!defined('JUNGLE_DIRNAME') && 
    define('JUNGLE_DIRNAME', dirname(__DIR__) . DIRECTORY_SEPARATOR . 'core' . DIRECTROY_SEPARATOR . 'Jungle' . DIRECTORY_SEPARATOR . 'Jungle');

// similarly realpath('../../core/App')
!defined('APP_DIRNAME') && 
    define('APP_DIRNAME', dirname(__DIR__) . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . 'App');

/** 
 * 1. Include loader file
 * ----------------------
 */
 
include JUNGLE_DIRNAME . DIRECTORY_SEPARATOR . 'Loader.php';

/** 
 * 2. Autoloader registers namespaces Jungle/ and your App/ 
 * --------------------------------------------------------
 */
  
$loader = \Jungle\Loader::getDefault();
$loader->registerNamespaces([
	'Jungle'    => JUNGLE_DIRNAME,
	'App'       => APP_DIRNAME
]);
$loader->register();

/** 
 * 3. Application instantiate and run
 */
 
$app = new \App\Application($loader);
$response = $app->handle(\Jungle\Http\Request::getInstance());
$response->send(); // fully auto send output