PHPackages                             robert-wen/fengphpframework - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. robert-wen/fengphpframework

ActiveProject[Framework](/categories/framework)

robert-wen/fengphpframework
===========================

php DIY framework

08PHP

Since Dec 12Pushed 8y agoCompare

[ Source](https://github.com/Robert-Wen/fengphp)[ Packagist](https://packagist.org/packages/robert-wen/fengphpframework)[ RSS](/packages/robert-wen-fengphpframework/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

fengPHPFrameWork
================

[](#fengphpframework)

个人PHP框架，帮助理解流行框架工作原理

\###1.目录结构

```
项目目录
    |
    |-app(开发者写代码的地方，存放着Model, View, Controller)
    |    |
    |    |-home(前台模块)
    |    |    |
    |    |    |-model(模型类)
    |    |    |
    |    |    |-controller(控制器类)
    |    |    |
    |    |    |-view(模板文件)
    |    |
    |    |-admin(后台模块)
    |    |
    |    |-...
    |
    |-fengphp(框架核心)
    |    |
    |    |-core(核心功能)
    |    |   |
    |    |   |-controller(放置控制器基类)
    |    |   |
    |    |   |-model(放置模型基类)
    |    |   |
    |    |   |-view(处理模板文件加载的类)
    |    |
    |    |-...
    |
    |-public(入口，放置单入口文件和静态资源)
    |    |
    |    |-static(静态资源)
    |    |
    |    |-view(公共模板文件)
    |    |
    |    |-index.php(单入口文件)
    |
    |-system(系统配置)
    |    |
    |    |-config(配置文件)
    |    |
    |    |-helper.php(助手函数文件)
    |
    |-runtime(运行时产生的文件放置在这里，例如，session 文件)
    |
    |-vendor(第三方类库放置在这里，例如 composer 类库)
    |
    |-...

```

\###2.框架构建的基本步骤 #####第1步：从 `Github` 中将项目库(repository)拉取到本地

```
这样子就可以在本地修改项目，然后提交同步到 Github 上面

```

\#####第2步：创建出框架的目录结构

```
按照上面的目录结构创建目录即可

```

\#####第3步：往框架目录（fengphp）中导入composer类库

```
composer类库的作用：音乐指挥家的角色，负责协调各种类库文件的加载，可以方便地实现类库的自动加载。
用法：
1.composer init
作用：在框架目录中初始化 composer ，生成 composer.json 配置文件
2.composer dump
作用：在框架目录中创建 vendor/composer 目录和 vendor/autoload.php 类文件
3.修改 composer.json 配置文件，添加配置项 autoload:
{
    ...,
    /*这个只能用双引号括住配置项*/
    "autoload": {
        /*这个指定自动加载的文件*/
        "files": ["system/helper.php"],
        /*psr-4：自动加载规范。这个指定命名空间和目录的映射关系*/
        "psr-4": {
            /*命名空间: 目录*/
            "app\\": "app\\",
            "feng\\": "fengphp\\"
        }
    }
}
4.composer dump
作用：根据 composer.json 配置文件重新生成 vendor 目录下面的内容
5.在单入口文件 index.php 中将 vendor/autoload.php 类文件加载进来，
然后只需要指定类的完全限定名称 new \fengphp\core\Boot() 或者导入别名
use fengphp\core\Boot; new Boot();  就能使用到 Boot 类。

```

\#####第4步：创建单入口文件

```
//动作：别名导入（phpstorm自动生成）
use fengphp\core\Boot;

//动作：用 require_once 加载类文件 autoload.php,
//因此在类文件 autoload.php 加载失败时中止PHP脚本的运行
//功能：实现类文件的自动加载
require_once '../vendor/autoload.php';

//动作：用 require_once 加载类文件 Boot.php 并且调用 run() 方法,
//因此在类文件 Boot.php 加载失败时中止PHP脚本的运行
//功能：初始化框架环境，为 MVC 框架的正常运行做好准备
Boot::run();

```

\#####第5步：创建框架的引导类文件 `Boot.php`

```
class Boot {
    public static function run() {
        //第1步：错误处理
        self::handler();

        //第2步：初始化框架环境
        self::init();

        //第3步：运行应用程序，将url请求路由到指定的模块/控制器/方法
        self::appRun();
    }
    public static function init() {
        //1.设置正确的头部
        //2.设置正确的时区
        //3.开启一个会话
    }
    public static function handler() {
        //进行错误的处理
        //1.首先到 packagist 上面找到 flip/whoops
        //2.在 phpStorm 的命令行输入 composer require flip/whoops 将下载到目录中
        //3.在这个方法中粘贴下面的代码就行了
        $whoops = new \Whoops\Run;
        $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
        $whoops->register();
    }
    public static function appRun() {
        //1.接收用户的url请求参数
        //2.将接收到的url参数拆分成module, controller, action
        //3.实例化指定的控制器类后调用指定的方法
    }
}

```

\#####第6步：在 fengphp/core/controller 中创建一个控制器基类文件 Controller.php

```
Controller.php 控制器基类文件主要实现所有的控制器类共用的方法，
例如，成功失败提示message()等功能

```

\#####第7步：在 fengphp/core/model 中创建一个模型基类文件 Model.php

```
Model.php 模型基类文件主要实现所有的模型类共用的方法，
例如，数据库的连接，数据增删改查，数据库链式操作等功能

```

\#####第8步：在 fengphp/core/view 中创建一个视图类文件 View.php

```
View.php 视图基类文件用于加载和渲染模板等功能。
例如，获得模板渲染需要的数据，用模板数据渲染模板等功能

```

\######经过上面的步骤后一个渣渣的框架基本完成了，以下的4个步骤都是属于 ######用户测试或者使用框架的步骤！！ #####第9步：创建模块

```
在 app 目录下创建项目需要的模块:
home -- 前台模块
admin -- 后台管理模块
member -- 会员模块
...

```

\#####第10步：在模块中创建控制器 Controller （用户自定义的控制器类文件）

```
Controller 作用：负责调度页面，处理模型类提供的数据，然后用这些数据渲染模板，最终将页面输出发送到浏览器中呈现给用户
home模块中的测试控制器：
Index.php -- 首页控制器类文件，实现首页中可以执行的各种操作
Article.php -- 文章控制器类文件，实现文章的增删编辑等操作

member模块中的测试控制器：
Index.php -- 首页控制器类文件，实现首页中可以执行的各种操作
Login.php -- 登录控制器类文件，实现登录、退出登录和注册等功能

```

\#####第11步：在模块中创建模型 Model （用户自定义模型类，通常与数据库对应起来）

```
Model 作用：为网站提供数据的支持
User.php -- 用户模型类
Article.php -- 文章模型类，和上面的 Article.php 控制器类不一样
...

```

\#####第12步：在模块中创建视图 View （各种各样的前端页面，模板）

```
View 作用：直接面对用户，是一个网站的门面，十分重要。
通常模板都是事先做好，然后才在框架中加上后端的支持。
index.html -- 网站首页模板
edit.html -- 文章编辑的页面模板
login.html -- 登录页面的模板
...

```

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/8f86c0e08702215ebba11f7bb9d3e4914d7368d06c869b88a5feaf63ea068b8e?d=identicon)[Robert-Wen](/maintainers/Robert-Wen)

---

Top Contributors

[![Robert-Wen](https://avatars.githubusercontent.com/u/31128631?v=4)](https://github.com/Robert-Wen "Robert-Wen (25 commits)")

### Embed Badge

![Health badge](/badges/robert-wen-fengphpframework/health.svg)

```
[![Health](https://phpackages.com/badges/robert-wen-fengphpframework/health.svg)](https://phpackages.com/packages/robert-wen-fengphpframework)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
