spatie / macroable
一个用于动态向类添加方法的特性
2.0.0
2021-03-26 22:39 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.3
README
一个用于动态向类添加方法的特性
此包提供了一个特性,当应用于类时,可以在运行时向该类添加方法。
以下是一个快速示例
$myClass = new class() { use Spatie\Macroable\Macroable; }; $myClass::macro('concatenate', function(... $strings) { return implode('-', $strings); }); $myClass->concatenate('one', 'two', 'three'); // returns 'one-two-three'
可宏特性及其实现的想法来自Laravel 框架的 macroable
特性。
支持我们
我们投入大量资源创建了一流的开放源代码包。您可以通过购买我们的付费产品之一来支持我们。
我们非常欢迎您从家乡寄来明信片,说明您正在使用我们的哪个包。您可以在我们的联系页面找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
安装
您可以通过 composer 安装此包
composer require spatie/macroable
用法
您可以使用 macro
向类添加新方法
$macroableClass = new class() { use Spatie\Macroable\Macroable; }; $macroableClass::macro('concatenate', function(... $strings) { return implode('-', $strings); }); $macroableClass->concatenate('one', 'two', 'three'); // returns 'one-two-three'
传递给 macro
函数的可调用对象将被绑定到 class
$macroableClass = new class() { protected $name = 'myName'; use Spatie\Macroable\Macroable; }; $macroableClass::macro('getName', function() { return $this->name; }; $macroableClass->getName(); // returns 'myName'
您还可以通过使用混合类一次性添加多个方法。混合类包含返回可调用的方法。混合类中的每个方法都将注册到可宏类上。
$mixin = new class() { public function mixinMethod() { return function() { return 'mixinMethod'; }; } public function anotherMixinMethod() { return function() { return 'anotherMixinMethod'; }; } }; $macroableClass->mixin($mixin); $macroableClass->mixinMethod() // returns 'mixinMethod'; $macroableClass->anotherMixinMethod() // returns 'anotherMixinMethod';
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
composer test
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现有关安全性的错误,请通过电子邮件发送至 [email protected],而不是使用问题跟踪器。
明信片软件
您可以使用此包(它是MIT 许可的),但如果它进入您的生产环境,我们非常欢迎您从家乡寄来明信片,说明您正在使用我们的哪个包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
我们将所有收到的明信片发布在我们的公司网站上。
致谢
想法和代码来自Laravel 框架的 macroable
特性。
许可
MIT 许可证(MIT)。有关更多信息,请参阅许可文件。