渐进式 PHP 常驻框架引擎 QueryPHP

MIT
PHP
跨平台
2010-03-04
doyouhaobaby

The QueryPHP Application

QueryPHP is a modern, high performance PHP 7 resident framework, with engineer user experience as its historical mission, let every PHP application have a good framework.

A hundred percent coverage of the unit tests to facing the bug,based on Zephir implemented framework resident,with Swoole ecology to achieve business resident, now or in the future step by step. Our vision is USE LEEVEL WITH SWOOLE DO BETTER, let your business to support more user services.

The PHP Framework For Code Poem As Free As Wind, Starts From This Moment With QueryPHP.

The core packages

How to install

Base use

composer create-project hunzhiwange/queryphp myapp dev-master

Visite it

php leevel server

Base optimization

Debug

Modify .env or runtime/bootstrap/option.php.

// Environment production、testing and development
ENVIRONMENT = production

// Debug
DEBUG = false

Commands

The commands below can make queryphp faster.

php leevel router:cache
php leevel option:cache
php leevel i18n:cache
php leevel view:cache
php leevel autoload (contains `composer dump-autoload --optimize`)

Or

php leevel production

USE LEEVEL DO BETTER

Windows

Need to tests.

Linux

You can download the source code.

git clone git@github.com:hunzhiwange/leevel.git
cd ext

Then compile it.

$/path/to/phpize
$./configure --with-php-config=/path/to/php-config
$make && make install

Then add extension to your php.ini,you can see if installation is successful by command php -m.

extension = leevel.so

Use Swoole With Ultra High Performance

This will coming back later.

php leevel swoole:http

Unified Code Style

$cd /data/codes/queryphp
$php-cs-fixer fix --config=.php_cs.dist

License

The QueryPHP framework is open-sourced software licensed under the MIT license.

============= 华丽分割线 ==============

开发设计引言

根据以前的计划,我希望做一个这样的框架,首先它是一个传统的 PHP 框架,无须依赖任何扩展,很容易安装。

## 首先它应该是团队友好

为每一个 PHP 脚本开启强类型,提高代码质量,严禁意味着后期更少的错误

declare(strict_types=1);namespace Leevel\Kernel; 

use Leevel\Http\IRequest;
use Leevel\Http\IResponse;

interface IKernel
{
    /**
     * 响应 HTTP 请求
     *
     * @param \Leevel\Http\IRequest $request
     *
     * @return \Leevel\Http\IResponse
     */
    public function handle(IRequest $request): IResponse;

    /**
     * 执行结束
     *
     * @param \Leevel\Http\IRequest  $request
     * @param \Leevel\Http\IResponse $response
     */
    public function terminate(IRequest $request, IResponse $response): void;

    /**
     * 返回项目.
     *
     * @return \Leevel\Kernel\IProject
     */
    public function getProject(): IProject;
}

## 单元测试高覆盖

我发现国内很多 PHP 框架竟然是 0 单元测试,随着我自己开始编写越来越多的单元测试,发现了单元测试不仅仅是发现 bug,更是可以帮助你设计框架接口,站在使用者的立场来优化框架组件。而且对于后期将会生成良性循环,更少 bug 减少反反复复地陷入无法自拔,代码质量无法保证,所以 QueryPHP 第一个版本基本维度 100% 覆盖,后续加强。

declare(strict_types=1);namespace Tests\Cache;

use Leevel\Cache\File;
use Tests\TestCase;

class FileTest extends TestCase
{
}

## 良好的体验

QueryPHP 以 Laravel 和 Symfony 为参考对象,主打 ioc + ddd 方式来构建良好用户体验的框架。orm 在做小规模重构,相关设计在试错中。

declare(strict_types=1);

namespace Tests\Database\Ddd\Entity;

use Leevel\Database\Ddd\Entity;

class TestConstructWhiteEntity extends Entity
{
    const TABLE = 'test';

    /**
     * 存在复合主键.
     *
     * @var array
     */
    const PRIMARY_KEY = [
        'id',
    ];

    const AUTO_INCREMENT = 'id';

    const STRUCT = [
        'id' => [
            'name'            => 'id', // database
            'type'            => 'int', // database
            'length'          => 11, // database
            'primary_key'     => true, // database
            'auto_increment'  => true, // database
            'default'         => null, // database
            'construct_white' => true,
        ],
        'name' => [
            'name'           => 'name',
            'type'           => 'varchar',
            'length'         => 45,
            'primary_key'    => false,
            'auto_increment' => false,
            'default'        => null,
        ],
    ];
    protected $id;

    protected $name;
}

## 组件化

每一个组件即是一个 composer, 遵循高内聚低耦合。

https://github.com/queryyetsimple

## 可选扩展框架实现高性能  Leevel

我们访问一个类, composer 根据 psr4 规则去搜索到我们文件而载入,如下的脚本会被载入。

https://github.com/hunzhiwange/framework/blob/master/src/Queryyetsimple/Di/Container.php

use Leevel\Di\Container

如果我们存在一个扩展就提供了这样一个类并随着 PHP 常驻,是不是性能不错,实际上是可以,QueryPHP 选择了 zephir 来实现。

https://github.com/hunzhiwange/leevel/blob/master/leevel/di/container.zep

实际上会被编译成 c

https://github.com/hunzhiwange/leevel/blob/master/ext/leevel/di/container.zep.c

这样子,不需要修改代码直接提升性能。

extension = leevel.so

### opcache 开启后还有性能优化吗?

Yes, QueryPHP 的 PHP 版本和扩展版本功能一致,根据有对比性,核心组件走扩展来提升性能。
你可以亲自去编译一下。

https://github.com/hunzhiwange/leevel


### 如何保证 PHP 版本和扩展版本在对外 API 的一致性

高单元测试覆盖率,公用一份单元测试,我们通过 subtree 将单元测试抽离到一个 git 仓库来共享单元测试。

git subtree add --prefix=tests git@github.com:queryyetsimple/tests.git master
https://github.com/hunzhiwange/leevel/blob/master/tests/Di/ContainerTest.php
https://github.com/hunzhiwange/framework/blob/master/tests/Di/ContainerTest.php

## 超高性能支持 swoole

swoole 的问世对于 PHP 后端来说是一种福音,看到 swoole 4.1 开始支持原始 pdo,redis 协程,支持 swoole 势在必行。已经做了一些基础工作,对于第一个版本我们要完善单元测试,所以下一个版本以及未来数年主要支持 swoole.我们不想在传统的框架与 TP 竞争,不会疯狂扩展功能。稳定与性能是第一个要素,QueryPHP 志在高性能。未来主要围绕着微服务,与微服务基础设施进行整合的相关研究。

## 体验吧。求 star

访问

https://github.com/hunzhiwange/queryphp

composer create-project hunzhiwange/queryphp myapp dev-master --repository=https://packagist.org/
php leevel server
Api Test http://127.0.0.1:9527/api/test
php leevel link:public http://127.0.0.1:9527/public/css/page.css
php leevel link:storage http://127.0.0.1:9527/storage/logo.png
php leevel link:apis http://127.0.0.1:9527/apis/

优化性能

php leevel production
开启 opcache

更高性能,编译安装配套可选扩展

https://github.com/hunzhiwange/leevel

git clone git@github.com:hunzhiwange/leevel.git
cd ext

$/path/to/phpize
$./configure --with-php-config=/path/to/php-config
$make && make install

extension = leevel.so

来体验吧,如果你觉得有意思,给我一个 star,关注 QueryPHP.

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

QueryPHP V1-alpha.3 完善权限,支持 Swoole 4 和 RoadRunner

经过 3 个月的开发,QueryPHP v1.0.0-alpha.3 版本可以发布了,这也是 alpha 最后一个版本。 关于 QueryPHP QueryPHP 是一款现代化的高性能 PHP 7 常驻框架,以工程师用户体验为历史使命,让...

03/13 01:51

QueryPHP 1.0.0-alpha.2 发布,新增 IViewUI 通用后台权限系统

QueryPHP 渐进式 PHP 常驻框架引擎 QueryPHP 是一款现代化的高性能 PHP 7 常驻框架,以工程师用户体验为历史使命,让每一个 PHP 应用都有一个好框架。 百分之百单元测试覆盖直面 Bug 一剑封喉...

2018/12/11 10:08

QueryPHP 1.0.0-alpha.1 发布,渐进式 PHP 常驻框架引擎

HI,各位 2018 已接近尾声,在这个秋意满满的时节,小牛仔潜心研究 2 年的 QueryPHP 将迎来了自己第一个测试版本。 早在 2009 年 2 月份,我开始接触 PHP 这门语言,那个时候边学些边开发,并...

2018/11/08 11:24

没有更多内容

加载失败,请刷新页面

没有更多内容

1
回答
PHP框架queryphp教程:入门二 ORM

在上一章,我们介绍了queryphp框架的hello world,并对queryphp框架有了大致的了解。这一章,我们将解释ORM。对象关系映射(Obje...

2012/12/11 15:10
1
回答
PHP框架queryphp教程:入门一 Hello World

配置好php环境 不会配置可以看下附录php安装 下载queryphp后,把解压出来 http://code.google.com/p/queryphp/...

2012/12/05 09:27

没有更多内容

加载失败,请刷新页面

没有更多内容

欢迎体验 QueryPHP,主框架 5 万行单元测试覆盖了 73%的代码, 2 年开发即将问世

2016 年 10 月 QueryPHP 开始基于以前的一个过气老 php.5.0-5.4 版本框架进行重构,经过两年的开发项目终于接近尾声。随着单元测试逐步逼近 100%,第一个 alpha 版本正在整理发布。 根据以前...

2018/09/04 21:51
101
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部