decodelabs / veneer
自动静态外观
v0.11.6
2024-08-21 15:43 UTC
Requires
- php: ^8.1
- decodelabs/exceptional: ^0.4
- decodelabs/glitch-support: ^0.4
- psr/container: ^2
Requires (Dev)
- composer-runtime-api: ^2.2
- decodelabs/pandora: ^0.2.11
- decodelabs/phpstan-decodelabs: ^0.6
- decodelabs/slingshot: ^0.1.1
Suggests
- decodelabs/slingshot: Complex plugin instantiation support
- dev-develop / 0.11.x-dev
- v0.11.6
- v0.11.5
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.25
- v0.10.24
- v0.10.23
- v0.10.22
- v0.10.21
- v0.10.20
- v0.10.19
- v0.10.18
- v0.10.17
- v0.10.16
- v0.10.15
- v0.10.14
- v0.10.13
- v0.10.12
- v0.10.11
- v0.10.10
- v0.10.9
- v0.10.8
- v0.10.7
- v0.10.6
- v0.10.5
- v0.10.4
- v0.10.3
- v0.10.2
- v0.10.1
- v0.10.0
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.1
- v0.4.0
- v0.3.0
- v0.2.0
- v0.1.0
- dev-main
This package is auto-updated.
Last update: 2024-09-04 21:39:20 UTC
README
为您的PHP对象创建自动静态前端。
使用Veneer提供对常用功能的轻松访问,同时不牺牲可测试性。
在DecodeLabs博客上获取新闻和更新。
安装
composer require decodelabs/veneer
使用方法
假设您有一个常用的库类,您经常使用
namespace Some\Random\Library { // This is a library class you use regularly class MyThing { public function doAThing() { echo 'Done!'; } } }
您可以通过以下方式绑定一个静态、自动生成的界面:
namespace App\Setup { // This is your environment setup code use DecodeLabs\Veneer; use Some\Random\Library\MyThing; use App\CoolThing; Veneer::register( MyThing::class, // active object class MyThingFrontage::class // frontage class ); } namespace Some\Other\Code { use App\CoolThing; // Your general userland code CoolThing::doAThing(); }
插件
遗憾的是,PHP仍然没有__getStatic()
,所以我们必须在绑定时静态声明插件名称,但它们仍然有助于创建更广泛的接口。
在您的FacadeTarget
上定义插件属性,带有Plugin
属性,如果不需要立即加载,也可以包含LazyLoad
属性。
namespace My\Library { use DecodeLabs\Veneer\Plugin; use DecodeLabs\Veneer\LazyLoad; class MyThing { #[Plugin] #[LazyLoad] public MyPlugin $plugin; } class MyPlugin { public function doAThing(): string { return 'Hello from plugin1'; } } } namespace Some\Other\Code { use My\Library\MyThing; MyThing::$plugin->doAThing(); // Hello from plugin1 }
注意,如果您的目标类有一个带有必需参数的构造函数,您需要将decodelabs/slingshot
添加到您的项目中,以便Veneer可以实例化它。
许可
Veneer采用MIT许可。有关完整许可文本,请参阅LICENSE。