QueryPHP V1-beta.1 部分文档代码解耦,版本 PHP 7.3.2

栏目: 软件资讯 · 发布时间: 5年前

内容简介:经过 1 个月的开发,QueryPHP v1.0.0-beta.1 版本可以发布了,这也是 beta 3 个版本的开始部分。这个版本的主要是代码解耦和性能提升,文档开发。 关于 QueryPHP QueryPHP 是一款现代化的高性能 PHP 7 常驻框架,...

经过 1 个月的开发,QueryPHP v1.0.0-beta.1 版本可以发布了,这也是 beta 3 个版本的开始部分。这个版本的主要是代码解耦和性能提升,文档开发。

关于 QueryPHP

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

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

更新日志

  • Facade 优化,不再继承一个基础的 Facade,不影响单元测试,并且减少了复杂度和调用链
  • 函数惰性加载方案支持,将静态类解耦为真正的函数,框架底层组件直接调用函数本身
  • 文档更新,这次更新了 20 多篇文档
  • 新增几十例测试用例,框架测试用例终于突破 3000 大关,框架部分 3008 测试用例, 9835 断言
  • PHP 最低依赖版本从 PHP 7.1.3 修改 PHP 7.3.2,框架正在迭代距离用户使用还有段时间,我们可以使用最新的特性
  • 框架自带的 composer 载入优化器支持辅助函数白名单
  • QueryPHP 自身是一个包含基础权限的后台系统,代码优化更符合领域驱动设计分层架构,引入工作流简化流水账代码
  • 锁定 doctrine/annotations ~1.6.0 和 zendframework/zend-diactoros ^2.1.1 减少兼容性问题和修复用户安装报错的问题
  • 去掉视图中 v8js 的支持,删除基类 Facade, 删除宏扩展,简化设计减少复杂度。
  • 技术债务,框架底层大量的代码优化进行解耦,减少复杂减少技术债务

 

函数惰性加载

PHP 的函数式特性已经逐步被纯对象所取代,函数库很多时候被包装为静态类,很多时候其实不需要一个类,为此 QueryPHP 底层框架提供了全局函数 fn 来实现了惰性加载。

<?php

declare(strict_types=1);

fn('Leevel\\Support\\Str\\rand_num', 5);

精简框架自身助手函数库

仅仅提供 4 个助手函数就完全满足了系统的库函数的加载使用。

https://github.com/hunzhiwange/framework/blob/master/src/Leevel/Leevel/functions.php

fn('Leevel\\Support\\Str\\rand_num', 5); 
hl('dump', 1, 2);
app('request');
__('国际化');

例子函数

<?php

declare(strict_types=1);

namespace Leevel\Support\Str;

/**
 * 随机数字.
 *
 * @param int    $length
 * @param string $charBox
 *
 * @return string
 */
function rand_num(int $length, ?string $charBox = null): string
{
    if (!$length) {
        return '';
    }
    if (null === $charBox) {
        $charBox = '0123456789';
    }
    return rand_str($length, $charBox);
}

// @codeCoverageIgnoreStart
if (!function_exists('Leevel\\Support\\Str\\rand_str')) {
    include __DIR__.'/rand_str.php';
}
// @codeCoverageIgnoreEnd

Facade 优化

最开始采用的 Laravel 的继承一个基础的 Facade,方便单元测试,有一定性能损失。后来觉得在做单元测试只需要清空容器注册的服务就可以所以优化了一版本。

<?php

declare(strict_types=1);

namespace Leevel\Encryption\Facade;

use Leevel\Leevel\App;

/**
 * 门面 encryption.
 *
 * @author Xiangmin Liu <635750556@qq.com>
 *
 * @since 2017.06.10
 *
 * @version 1.0
 */
class Encryption
{
    /**
     * call.
     *
     * @param string $method
     * @param array  $args
     *
     * @return mixed
     */
    public static function __callStatic(string $method, array $args)
    {
        return App::singletons()
            ->make('encryption')
            ->{$method}(...$args);
    }
}

 

文档更新

系统新增了 20 个新的文档,后续会逐渐丰富起来。

https://www.queryphp.com/docs/

 

自动载入优化器

QueryPHP 实现了一套基于并且优化了 composer 的自动加载,并且屏蔽了助手函数的载入。

这次提供了白名单来让你选择部分函数的载入。

/**
 * ---------------------------------------------------------------
 * Composer
 * ---------------------------------------------------------------.
 *
 * 用于管理 PHP 依赖包
 * 优化 composer 性能,提炼 composer 中的 autoload_static 中的我们关注的 psr4 命名空间映射
 * 我们 classmap 需要通过 `php leevel autoload` 生成,包含命令 `composer dump-autoload -o`
 * 对于助手函数需要自己引入
 */
$autoloadLeevel = __DIR__.'/../vendor/autoloadLeevel.php';

if (is_file($autoloadLeevel)) {
    $composer = require $autoloadLeevel;
} else {
    $composer = require __DIR__.'/../vendor/autoload.php';
}

composer.json 部分代码

{
    "name": "hunzhiwange/queryphp",
    "description": "The QueryPHP Application.",
    "require": {
        "php": "^7.3.2",
        "hunzhiwange/framework": "dev-master"
    },
    "extra": {
        "leevel-console" : {
            "autoload": {
                "@namespaces": "The white of Psr4",
                "namespaces": [
                    "Leevel",
                    "Dotenv",
                    "Carbon",
                    "Monolog",
                    "Whoops",
                    "Swagger"
                ],
                "@files": "The white of autoload files",
                "files": [
                    "common/Infra/functions.php",
                    "hunzhiwange/framework/src/Leevel/Leevel/functions.php"
                ]
            }
        }
    }
}

 

更好地领域驱动分层实现,工作流支持

正在尝试更好地代码实现领域驱动设计分层架构。

https://github.com/hunzhiwange/queryphp/blob/master/common/Domain/Service/User/Role/Update.php

 

锁定部分组件版本

锁定 doctrine/annotations ~1.6.0 和 zendframework/zend-diactoros ^2.1.1 减少兼容性问题和修复用户安装报错的问题,持续集成系统在 composer 最低依赖状况下不会出错。

https://github.com/hunzhiwange/queryphp/issues/1

 

帮助我们

QueryPHP 是在 2016 年 10 月开始基于一个我早年的 PHP 框架 DoYouHaoBaby 框架开发的。这个早年的框架是我在 2010 年 7.8 月开始的,那个时候在大二,开始的框架也主要用于自用。早年基于这个框架的一些应用作品如下:

DYHB.BLOG_X

DYHB.BLOG_X-2.0详细安装图文教程 http://www.knowsky.com/804758.html

http://www.downcode.com/downcode/j_18106.shtml

https://github.com/hunzhiwange/dyhb.blog-x

 

WindsForce 社区

http://www.mycodes.net/code_previewmap.php?id=6185

https://github.com/hunzhiwange/windsforce

https://www.oschina.net/p/windsforce

 

目前 QueryPHP 由本人一人负责开发,文档,logo 设计,视频,官网和宣传需要大量精力。

如果你觉得可以,可以推荐朋友来试用一下,关注一哈,希望吸引到有兴趣的一起开发,文档,。

用 10 年打造一个完美的作品,2010-present Xiangmin Liu。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript实战手册

JavaScript实战手册

David Sawyer McFarland / 李强 / 机械工业出版社 / 2009 / 89.00元

在《JavaScript实战手册》中,畅销书作者David McFarland教你如何以高级的方式使用JavaScript,即便你只有很少或者没有编程经验。一旦掌握了这种语言的结构和术语,你将学习如何使用高级的JavaScript工具来快速为站点添加有用的交互,而不是一切从头开始编写脚本。和其他的Missing Manuals图书不同,《JavaScript实战手册》清楚、精炼,手把手地讲解。 ......一起来看看 《JavaScript实战手册》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具