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

DuckPHP 1.2.3 发布,属临时性发布

  •  
  •   dvaknheo · 2020-04-01 19:47:53 +08:00 · 3048 次点击
    这是一个创建于 1728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目地址: https://github.com/dvaknheo/duckphp
    作者 QQ: 85811616
    官方 QQ 群: 714610448

    DuckPHP 1.2.3 发布
    这个发布是临时性的。总结这段时间的工作。
    但不意味着没大变化。

    一样是全覆盖测试通过。phpstan 检查通过。php-cs-fixer 代码风格通过。

    代码层面
    最大的改动是把主流程从 App 抽出 Kernel,看主流程更清晰了。
    对于没设置 PATH_INFO 的服务器修复 PATH_INFO 。
    可以给 DB 加 Log 了。
    加了 AppHelper 。这个特殊的助手类
    GET,POST,REQUEST 有相应 不必要 $x=C::SG()->_GET['flag']??null; 这样了。
    Pager 重整,自己做分页更容易了
    添加了短函数的选项。不必在 View 里,都加 user 了。

    最主要是文档的更新。加了所有类的参考。还重新折腾了教程。
    写了大量 的工作。
    不幸的是,这反而更糟糕了。

    是的,我写的教程把我搞晕了,我需要人来给我提示,好让我重新梳理一遍。
    另一方面,这段时间动力不足,效率低下,需要刺激刺激。
    所以这也就是发布这个版本的意义。

    我坚信 DuckPHP 是个优秀的 PHP 框架。就差一小撮人搞起了。
    下一个版本承诺把参考文档搞定,文档是我的弱项,主要是写了之后不知道人看懂了没。
    没反馈的情况下总是缺乏写好的信心。
    DuckPHP 好多东西巧妙的东西都没写出来。

    比如 template 目录里 多个子项目,u 这个项目,就把 full 里的用户系统直接拿来用
    这些插件系统都没提示。

    最好还是能写个完整的 用户系统的演示,让大家能和其他 PHP 框架对比

    另: 这几天在 github 上搜 "php 框架" 以最近更新作为排序,发现很是有趣。

    2020 已经过了 1/4,希望在今年,大家继续加油,继往开来。
    10 条回复    2020-04-14 21:50:12 +08:00
    wujunze
        1
    wujunze  
       2020-04-01 20:07:10 +08:00
    加油💪
    stabc
        2
    stabc  
       2020-04-01 20:13:02 +08:00
    建议把东西说的通俗易懂一些。
    panxianhai
        3
    panxianhai  
       2020-04-01 20:41:13 +08:00
    和其他框架简单对比 是甩 laravel 6 几条街的意思吗
    dvaknheo
        4
    dvaknheo  
    OP
       2020-04-01 21:12:01 +08:00
    @panxianhai 我个人很感慨 laravel 的推广能力,但同时不喜欢 laravel 把 php 搞得那么复杂。

    比如中间件系统, 搞得堆栈几乎没法看。我的解决方案,如果是普通程序,在 控制器 的构造和析构方法里解决就行了。再上一级的,就是用路由钩子前后钩挂,再上一级,那就是重写 run 方法。

    控制器里写的,也就是普通代码人员的级别,一看就能看出来
    再往上,钩子的级别,特殊的控制。这是小组长的干活。
    重写 run 方法,除非是很特殊很特殊,才有意义。

    调试程序,最怕之一就是:我明明这么写了,但是为什么代码没跑到这里,怎么调试。


    blade 模板,这玩意让我想起了当年 smarty,写模板的还是 php 人员来写。我不认为模板引擎是框架的必备部分。

    我以前写过一个模板引擎叫 TagFeather 。上个月想复活,然后发现那玩意当年写得太复杂了,没足够动力搞定。
    人家是解析字符串方式解析模板, 我是解析 XML,而且是允许带 php 标记的 xml 。
    那么这个模板引擎有什么好处呢? 静态 html 页面 + php 大纲页面 编译成最终 可读的 php 页面,用 jquery 选择器方式关联。
    4IoNut698v3Xgc2p
        5
    4IoNut698v3Xgc2p  
       2020-04-02 02:22:41 +08:00 via Android
    就怕花费精力学了这个结果你跑路了
    dvaknheo
        6
    dvaknheo  
    OP
       2020-04-02 09:05:24 +08:00
    @praming 这框架两个特点
    一是可以热修复, 所有东西都可以替换成你实现的版本,所以如果有漏洞了,第一时间是修改工程中的实现,而不用更新框架版本。 所有不满足这个特性的框架,都是不值得看的。

    二是只有工程的几个核心文件才和框架文件相关联。替换成其他东西很容易,尽管这基本不用。

    其他巧妙之处,我需要人来重新描述一下。给其他人方便理解。
    qq1340691923
        7
    qq1340691923  
       2020-04-02 09:32:45 +08:00
    浪费在 php 上可惜了
    king888
        8
    king888  
       2020-04-02 10:08:14 +08:00
    实现热修复的原理是什么
    dvaknheo
        9
    dvaknheo  
    OP
       2020-04-02 20:59:32 +08:00
    @king888

    一, 入口类 DuckPhp\App 在 init() 开始阶段就替换成项目的 MY\Base\App extends DuckPhp\App 执行后续操作。 你可以在 MY\Base\App 里随便改实现。

    二,可变单例,Duckphp 的组件都是用 G($object) 方法调用。你可以传入新的继承旧组件的类。

    比如,My\Helper\ControllerHelper::GET() 调用的是 DuckPHP\App::GET() 返回 SuperGlobal::G()->_GET 。
    你可以重写 My\Base\App::onInit(); 追加一个 My\SuperGlobal extends SuperGlobal 支持 workerman 或 swoole

    更常出现的是 App::Pager(My\Base\Pager::G()); 自己 重写 Pager 类实现自己的渲染。 调用还是 echo C::PageHtml();
    terrywater
        10
    terrywater  
       2020-04-14 21:50:12 +08:00
    技术框架推广能力?

    Yii2,薛强在中国大陆根本没有推广,一大批人在用,的确是好用。

    安全稳定是一个框架的首要因素,思想,另外还有生态,用你的这个框架连接 mongodb,redis 等,MQ,都得自己写,很累啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5233 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:27 · PVG 17:27 · LAX 01:27 · JFK 04:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.