Skip to main content

Crate sz_rust_addons_loader

Crate sz_rust_addons_loader 

Source
Expand description

§SZ-Rust Addons Loader — 插件加载器(Phase 10.1-10.3)

对标 PHP zzstudio/think-addons 的 Rust 实现,提供插件发现/清单解析/注册/路由解析能力。

§PHP 对齐

PHP 模块Rust 模块子任务
think\addons\Serviceloader::AddonLoader10.1
think\Addons::getInfo()manifest::parse_manifest10.1
spl_autoload_register(helper.php)autoload::AddonAutoload10.1
隐式插件状态管理registry::AddonRegistry10.2
think\addons\Route::executeroute::parse_route10.3
think\Route::resourceresource::build_resource_routes10.3.5

§模块结构

sz-rust-addons-loader/
├── Cargo.toml
└── src/
    ├── lib.rs          # 主入口(重导出)
    ├── error.rs        # 错误类型
    ├── loader.rs       # AddonLoader(对齐 Service.php)
    ├── manifest.rs     # 清单解析(对齐 Addons::getInfo)
    ├── autoload.rs     # 自动加载(对齐 spl_autoload_register)
    ├── registry.rs     # 注册中心(对齐插件状态管理)
    ├── route.rs        # 路由解析(对齐 Route::execute)
    └── resource.rs     # 资源路由注入(对齐 Route::resource)

§用法

use sz_rust_addons_loader::loader::AddonLoader;

let loader = AddonLoader::new("/path/to/addons");
let errors = loader.register().unwrap();
// errors 包含解析失败的插件错误(不中断整体扫描)

let route = loader.parse_route("/addons/operate/Order/index").unwrap();
assert_eq!(route.addon, "operate");
assert_eq!(route.controller, "Order");
assert_eq!(route.action, "index");

§不支持(与 PHP 差异)

  • 不实际加载 PHP 文件:Rust 无法直接执行 PHP,仅解析 $info 数组
  • 不实现钩子自动扫描:PHP 通过反射收集 Plugin.php 非基类方法作为钩子,Rust 侧需调用方显式注册
  • 不实现 service.ini 容器绑定:Rust 侧无容器概念,由调用方根据需要处理
  • 不实现 _empty 兜底方法:对齐 PHP is_callable([$instance, '_empty']),但需调用方实现

Re-exports§

pub use autoload::AddonAutoload;
pub use error::AddonLoaderError;
pub use error::AddonLoaderResult;
pub use loader::AddonLoader;
pub use manifest::AddonManifest;
pub use registry::AddonRegistry;
pub use resource::build_resource_routes;
pub use resource::HttpMethod;
pub use resource::ResourceAction;
pub use resource::ResourceOptions;
pub use resource::ResourceRoute;
pub use resource::ResourceRouteEntry;
pub use route::AddonRoute;

Modules§

autoload
插件自动加载(Phase 10.1)
error
插件加载器错误类型(Phase 10.1)
loader
插件加载器(Phase 10.1 主入口)
manifest
插件清单解析(Phase 10.1)
registry
插件注册中心(Phase 10.2)
resource
插件 RESTful 资源路由注入(Phase 10.3.5)
route
插件路由解析(Phase 10.3)