PHPackages                             edphp/framework - 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. edphp/framework

ActiveEdphp-framework[Framework](/categories/framework)

edphp/framework
===============

the php framework

068PHP

Since Jan 4Pushed 7y ago1 watchersCompare

[ Source](https://github.com/EdwardsBean/edphp)[ Packagist](https://packagist.org/packages/edphp/framework)[ RSS](/packages/edphp-framework/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

### composer自动加载注意

[](#composer自动加载注意)

composer.json中加入需要autoload的目录或文件，修改后要重新composer install生成新的autoload.php

### 单元测试

[](#单元测试)

```
./vendor/bin/phpunit --bootstrap ./vendor/autoload.php ./tests/ReflectionTest

```

### 测试工程添加framework依赖

[](#测试工程添加framework依赖)

测试工程添加：

```
    "repositories": [
        {
            "type": "path",
            "url": "F:/workspace/edphp",
            "options": {
                "symlink": true
            }
        }
    ],

```

然后添加framework依赖，以链接形式：

```
composer require "edphp/framework @dev"

```

### 控制器相关

[](#控制器相关)

wrap\_return\_object参数默认为true。控制器返回数据统一用Msg对象包装起来。也可以控制器直接返回Msg对象。

/Address/list 对应控制器Address类的list方法。

/express\_type/find\_one 对应ExpressType类的findOne方法

### 数据库操作

[](#数据库操作)

DB 初始化

Query 组装,用户入口。把参数都塞进options Connection 封装对应driver调用 Builder 将options解析封装成driver query，交给connection执行。 query.get() -&gt; connection.get() -&gt; builder.select() -&gt; connection.query()

改造的话，主要是在builder里。connection会添加特定数据库的额外配置到options中。

##### Query Builder

[](#query-builder)

db('tableName')返回query对象。

//where开头，get结尾确定查询 db('accounts')-&gt;where('username', 'edwardsbean')-&gt;get(); db('accounts')-&gt;where('votes', '&gt;', 100)-&gt;get(); db('accounts')-&gt;whereBetween('votes', \[1, 100\])-&gt;get(); db('accounts')-&gt;where('username', 'edwardsbean')-&gt;getOne(); db('accounts')-&gt;where(\['username'=&gt;'edwardsbean'\])-&gt;get(); db('accounts')-&gt;where('username', 'edwardsbean')-&gt;order('age', 'desc')-&gt;get(); //多字段排序？？？ db('accounts')-&gt;where('username', 'edwardsbean')-&gt;paginate(0, 20);

//update with id db('accounts')-&gt;save(\['id'=&gt;1, 'username'=&gt;'edwardsbean'\]); //insert without id db('accounts')-&gt;save(\['username'=&gt;'edwardsbean'\]); //多条数据 db('accounts')-&gt;saveAll(\['username'=&gt;'edwardsbean'\]);

##### Raw Query

[](#raw-query)

DB::insert/update/delete/statement('insert into users (id, name) values (?, ?)', \[1, 'Dayle'\]);

##### 原生查询

[](#原生查询)

db()-&gt;query/execute("sql");

##### Method Query

[](#method-query)

输入参数大于1个时，需使用array 查询关键字：

- findBy
- existsBy
- deleteBy
- removeBy
- countBy

逻辑关键字：

- Gte 大于等于
- Gt 大于
- Lt 小于
- Lte 小于等于
- In
- not
- Notint
- Between
- Or
- And
- Like
- Notlike

db('accounts')-&gt;findByUsername('edwardsbean'); db('accounts')-&gt;findByUsernameAndAge(\['edwardsbean', 18\]); db('accounts')-&gt;findByUsernameLike('%ed%'); db('accounts')-&gt;findByAgeGte(18); db('accounts')-&gt;existsById('5asfdrqwerqw'); db('accounts')-&gt;count(); db('accounts')-&gt;countByAge(28); db('accounts')-&gt;deleteByUsername("edwardsbean"); //return affect rows db('accounts')-&gt;removeByUsername("edwardsbean"); //return list of object db('accounts')-&gt;removeByUsernameOrAge(\["ed", 18\]); db('accounts')-&gt; db('accounts')-&gt; db('accounts')-&gt; db('accounts')-&gt;

##### Transaction

[](#transaction)

DB::transaction(function () { db('users')-&gt;update(\['votes' =&gt; 1\]);

```
db('posts')->delete();

```

}, 5);

##### Chunking Result(TODO)

[](#chunking-resulttodo)

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 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/4a436eb1e7e9576fe8d52f19a9e20e08384d09bd534dbb85d191cef96782301c?d=identicon)[EdwardsBean](/maintainers/EdwardsBean)

---

Top Contributors

[![EdwardsBean](https://avatars.githubusercontent.com/u/4447149?v=4)](https://github.com/EdwardsBean "EdwardsBean (71 commits)")

### Embed Badge

![Health badge](/badges/edphp-framework/health.svg)

```
[![Health](https://phpackages.com/badges/edphp-framework/health.svg)](https://phpackages.com/packages/edphp-framework)
```

###  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)
