chipslays / sauce
简单特性的集合。
1.0.1
2022-03-23 06:45 UTC
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-23 11:53:31 UTC
README
由有用事物制成的调味品。
安装
$ composer require chipslays/sauce
使用
单例
作为特性的简单单例实现。
use Sauce\Traits\Singleton; class Hero { use Singleton; } $hero1 = Hero::getInstance(); $hero1->attack(); Hero::forgetInstance(); $hero2 = Hero::getInstance(); $hero2->attack();
use Sauce\Traits\Singleton; class SingletonClass { use Singleton; private $value; /** * @param mixed $value * @return static */ public function set($value) { $this->value = $value; return $this; } /** * @return mixed */ public function get() { return $this->value; } } echo SingletonClass::getInstance()->set(1)->get(); // return 2 echo SingletonClass::getInstance()->set(2)->get(); // return 2 SingletonClass::forgetInstance(); echo SingletonClass::getInstance()->set(3)->get(); // return 3
可映射
当应用于类时,可以在运行时向该类添加方法。
ℹ
可映射已包含Call特性。
use Sauce\Traits\MappableClass; class MappableClass { use Mappable; } $class = new MappableClass; $class->map('sum', fn(...$args) => array_sum($args)); echo $class->sum(1000, 300, 30, 5, 2) // 1337 $class::mapOnce('timestamp', fn() => time()); echo $class->timestamp(); // e.g. 1234567890 echo $class->timestamp(); // e.g. 1234567890
use Sauce\Traits\MappableClass; class MappableClass { use Mappable; } MappableClass::map('sum', fn(...$args) => array_sum($args)); echo MappableClass::sum(1000, 300, 30, 5, 2) MappableClass::mapOnce('timestamp', fn() => time()); echo MappableClass::timestamp()
调用
调用函数或静态/非静态类。
use Sauce\Traits\Call; class MyClass { use Call; } $class = new MyClass; $class->__call_function(fn () => true); $class->__call_function('\App\Controllers\MainController@home'); $class->__call_function('\App\Controllers\MainController@users', [$id]);