基于 laravel 的模块化开发框架 (拓展与自动发现) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
zuohuadong

基于 laravel 的模块化开发框架 (拓展与自动发现)

  •  
  •   zuohuadong Oct 13, 2017 3233 views
    This topic created in 3118 days ago, the information mentioned may be changed or developed.

    拓展

    拓展是 Notadd 的一大特色,使得 Notadd 可以通过拓展 实现执行脚本、安装环境、控制硬件... 同时暴露接口给 PHP 的模块或者插件,实现以往 PHP 实现不了的东西。 比如,控制灯泡,使用传感器,安装 swoole 拓展,安装其他 PHP 拓展。 不过当前版本,还没来得及加入后台控制。

    完整的菜单排序与修改

    现在不仅支持模块的排序,还支持子菜单排序。目前还不支持菜单的移动,不列入主要功能。

    菜单排序

    优化框架性能

    通过 Redis 对配置文件进行缓存,性能有近 5 倍提升。首屏在 2 秒内可以渲染出来(注:SPA 单页应用首屏较慢),切换几乎秒开。

    新版的加载速度

    自动发现

    功能的实现基于代码块,但往往加载功能的逻辑,都是写在框架逻辑中的,而且是与功能代码块相关联的,怎么加载结构类似的功能代码块,但是却能使之解耦的呢? 于是自动发现功能营运而生。有了自动发现,能更专注于代码块的实现,而无需经常修改功能加载的逻辑代码(因为之前的耦合度是很高的)。

    目前,在 Notadd 中实现了两种自动发现:事件订阅器和命令行。

    由于 Notadd 的可插拔特性,在每个模块或插件独立注册这两类的功能块,将使模块或插件开发变得非常繁琐。而现在,只需要在模块源码目录中添加 Subscribers 和 Commands 这两个目录,然后在对应目录中添加对应的实现事件订阅器和命令行的类,程序启动时,就会自动加载对应的逻辑。

    参照如下:

    自动发现

    代码结构如下:

    <?php /** * This file is part of Notadd. * * @author TwilRoad <[email protected]> * @copyright (c) 2017, notadd.com * @datetime 2017-02-18 14:12 */ namespace Notadd\Administration\Subscribers; use Notadd\Administration\Controllers\InjectionController; use Notadd\Foundation\Routing\Abstracts\RouteRegister as AbstractRouteRegister; /** * Class RouteRegister. */ class RouteRegister extends AbstractRouteRegister { /** * Handle Route Register. */ public function handle() { $this->router->group(['middleware' => ['cross', 'web'], 'prefix' => 'api/administration'], function () { $this->router->post('token', InjectionController::class . '@token'); }); $this->router->group(['middleware' => ['auth:api', 'cross', 'web'], 'prefix' => 'api/administration'], function () { $this->router->post('access', InjectionController::class . '@access'); $this->router->post('configuration', InjectionController::class . '@configuration'); $this->router->post('dashboard', InjectionController::class . '@dashboard'); $this->router->post('info', InjectionController::class . '@info'); $this->router->post('save', InjectionController::class . '@save'); }); } } 

    github 地址: https://github.com/notadd/notadd

    gitee 地址 https://gitee.com/notadd/notadd

    1 replies    2017-10-13 15:00:50 +08:00
    Keson
        1
    Keson  
       Oct 13, 2017
    starred
    About     Help     Advertise     Blog     API     FAQ     Solana     3145 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:38 PVG 22:38 LAX 07:38 JFK 10:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86