lexus27 / jungle
Jungle PHP 框架
Requires
- php: >=5.6.0
This package is not auto-updated.
Last update: 2024-09-28 19:15:22 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
应用程序骨架类,可以重定义服务相对路径等,例如(Strategies
或Modules
) -
/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