V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
doyouhaobaby
V2EX  ›  PHP

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

  •  
  •   doyouhaobaby · 2018-12-11 10:22:17 +08:00 · 3070 次点击
    这是一个创建于 2209 天前的主题,其中的信息可能已经有所发展或是发生改变。

    QueryPHP 渐进式 PHP 常驻框架引擎

    来源: https://www.oschina.net/news/102591/queryphp-1-0-0-alpha2

    QueryPHP 是一款现代化的高性能 PHP 7 常驻框架,以工程师用户体验为历史使命,让每一个 PHP 应用都有一个好框架。

    百分之百单元测试覆盖直面 Bug 一剑封喉,基于 Zephir 实现框架常驻,依托 Swoole 生态实现业务常驻,此刻未来逐步渐进。 我们的愿景是 USE LEEVEL WITH SWOOLE DO BETTER, 让您的业务撑起更多的用户服务。

    #特性

    更新日志

    距离上一个版本有一个月了,这个我们的 hunzhiwange/framework 已有 94 条跟新日志,hunzhiwange/queryphp 已有 150 条日志,这个版本主要支持一个 IViewUI 开发的通用权限系统。

    hunzhiwange/framework

    hunzhiwange/queryphp

    • 修复模型实体更新 replace 的错误

    • 修复数据库单元测试没有很好的释放连接造成的本地跑单元测试 mysql gone away

    • 更好地支持单元测试

    • 加入断线重连,支持最高 3 次重连

    • 优化仓储查询对分页的友好支持

    • 修正一处集合的 BUG

    • 完善 Leevel\Support\Type 返回值类型

    • Restful 路由没有参数时为首页 index 而不是 show

    • 删除兼容获取 pathInfo 的获取方法 ?_url=xx,由 Nginx 可以做到

    • 对 axios 等前端提交类型 application/json 时自动处理表单数据

    • 加入一个环境变量 RUNTIME_ENVIRONMENT,利于更好地处理单元测试载入不同的配置文件

    • 领域实体加入 ENUM 支持

    • ... 更新太多不一一说明了。

    金字招牌,百分之百单元测试覆盖

    QueryPHP 拥有 6.5 万行源代码,单元测试代码为 75000 行,当然包含注释和空格,拥有 2829 条测试用例和 9245 条断言,充分的单元测试保证了我们代码的稳定性和质量。

    QueryPHP 其中一个使命就是单元测试带入的企业开发,以及给同行抛砖引玉,促进共同进步。

    Test and Deploy Your Code with Confidence

    ==> ...View\Compiler\CompilerForTest   ✓  ✓  ✓  ✓  ✓  ✓    ==> ...\View\Compiler\CompilerIfTest   ✓    ==> ...\Compiler\CompilerIncludeTest   ✓    ==> ...iew\Compiler\CompilerListTest   ✓    ==> ...ew\Compiler\CompilerListsTest   ✓  ✓  ✓    ==> ...ompilerPairedTagExceptionTest   ✓  ✓  ✓  ✓  ✓    ==> ...View\Compiler\CompilerPhpTest   ✓    ==> ...ew\Compiler\CompilerQuickTest   ✓    ==> ...\Compiler\CompilerTagselfTest   ✓    ==> ...View\Compiler\CompilerVarTest   ✓  ✓  ✓  ✓  ✓    ==> ...ew\Compiler\CompilerWhileTest   ✓    ==> Tests\View\HtmlTest                ✓  ✓  ✓  ✓  ✓  ✓  ✓  ✓  ✓    ==> Tests\View\ManagerTest             ✓    ==> Tests\View\PhpuiTest               ✓  ✓  ✓  ✓  ✓  ✓  ✓  ✓    ==> Tests\View\Provider\RegisterTest   ✓    ==> Tests\View\TwigTest                ✓  ✓  ✓  ✓    ==> Tests\View\V8jsTest                →  →  →  →  →  →  →  →  →   Time: 1.32 minutes, Memory: 84.00MB OK, but incomplete, skipped, or risky tests! Tests: 2829, Assertions: 9245, Skipped: 9. Generating code coverage report in Clover XML format ... done

    为什么要特别强调单元测试,这是国内一个 PHP 轮子普遍的一个非常大的痛点,欧美国家的轮子做得非常不错,片面追求功能炫酷吊炸天,外强中干。

    在早年的时候,我也从来不写单元测试觉得没什么用。做好一个功能,在控制器去调用一下,测试一哈是否正常,正常则通过。随着时间的流逝,这个控制器中的代码会被删除而丢失,当我们添加一个新功能或者修改已有的功能,分分钟改挂以前的功能,造成 bug 无穷无尽。

    单元测试的好处

    • 软件质量最简单、最有效的保证;

    • 是目标代码最清晰、最有效的文档;

    • 可以优化目标代码的设计;

    • 是代码重构的保障;

    • 是回归测试和持续集成的基石。

    QueryPHP 在未来将加大力度提供更重的单元测试彻底消灭低级 BUG,为中国创业提供公司提供稳定的 WEB 框架。

    如何安装

    基本使用

    composer create-project hunzhiwange/queryphp myapp dev-master

    打开浏览器访问

    php leevel server <Visite http://127.0.0.1:9527/>

    连接数据库

    首先创建一个数据库.

    CREATE DATABASE IF NOT EXISTS myapp DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    修改 .env

    vim .env

    ... // Database DATABASE_DRIVER = mysql DATABASE_HOST = 127.0.0.1 DATABASE_PORT = 3306 DATABASE_NAME = queryphp_development_db DATABASE_USER = root DATABASE_PASSWORD = ...

    to

    ... // Database DATABASE_DRIVER = mysql DATABASE_HOST = 127.0.0.1 DATABASE_PORT = 3306 DATABASE_NAME = myapp DATABASE_USER = root DATABASE_PASSWORD = 123456 ...

    执行数据库迁移命令

    php leevel migrate:migrate php leevel server

    测试连接数据库

    http://127.0.0.1:9527/api/entity

    {  count: 4,  :trace: {      ...  } }

    登陆到 QueryVue 后台

    安装前端

    第一步安装前端,细节信息可以在 frontend/README.md 查看.

    cd frontend npm install -g cnpm --registry=https://registry.npm.taobao.org // Just once cnpm install npm run serve # npm run dev

    登陆后台

    接着访问这个登陆地址. http://127.0.0.1:9528/#/login

    user: admin password: 123456

    后台首页

    红色主题的资源列表

    7 条回复    2018-12-11 14:57:32 +08:00
    iiusky
        1
    iiusky  
       2018-12-11 14:07:43 +08:00   ❤️ 1
    支持 oauth2 server 么?
    fenglangjuxu
        2
    fenglangjuxu  
       2018-12-11 14:20:33 +08:00
    支持
    dobelee
        3
    dobelee  
       2018-12-11 14:26:31 +08:00 via Android
    mark。
    doyouhaobaby
        4
    doyouhaobaby  
    OP
       2018-12-11 14:29:06 +08:00
    @iiusky 类似吧

    https://github.com/hunzhiwange/queryphp/blob/master/frontend/.env.example

    VUE_APP_BASE_API=http://127.0.0.1:9527

    // 应用接入信息,对应数据库中 app
    VUE_APP_APP_ID=admin
    VUE_APP_APP_KEY=B1DA4485-B49D-D8E3-0F9E-168D7605A797


    提供一个 APP_ID,APP_KEY,然后 用户名和密码,像是 oauth2 的 password 模式,没得刷新 token
    wbrobot
        5
    wbrobot  
       2018-12-11 14:52:34 +08:00
    真羡慕年轻人闲,搞出这么个吃力不讨好,没人用的东西。
    masker
        6
    masker  
       2018-12-11 14:56:42 +08:00 via Android
    好丑啊。
    doyouhaobaby
        7
    doyouhaobaby  
    OP
       2018-12-11 14:57:32 +08:00
    @wbrobot 公司内部的一些部分项目在用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.