byscripts / static-entity
提供某种静态实体
3.0.1
2018-10-15 10:16 UTC
Requires
- php: >=7.1.0
Requires (Dev)
- phpunit/phpunit: ^7.4
README
提供了一种通过静态数据获取某些实体/模型行为的方法
安装
在您的composer.json中添加包
在命令行中,运行 composer require byscripts/static-entity:~3.0
用法
创建您的静态实体
<?php use Byscripts\StaticEntity\AbstractStaticEntity; class WebBrowser extends AbstractStaticEntity { const CHROMIUM = 1; const FIREFOX = 2; const IE = 3; const OPERA = 4; const SAFARI = 5; private $name; private $brand; private $engine; private $license; public function getName() { return $this->name; } public function getBrand() { return $this->brand; } public function getEngine() { return $this->engine; } public function getLicense() { return $this->license; } static public function getDataSet(): array { return [ self::CHROMIUM => [ 'name' => 'Chromium', 'brand' => 'Google', 'engine' => 'Blink', 'license' => 'BSD' ], self::FIREFOX => [ 'name' => 'Firefox', 'brand' => 'Mozilla', 'engine' => 'Gecko', 'license' => 'MPL' ], self::IE => [ 'name' => 'Internet Explorer', 'brand' => 'Microsoft', 'engine' => 'Trident', 'license' => 'Proprietary' ], self::OPERA => [ 'name' => 'Opera', 'brand' => 'Opera Software', 'engine' => 'Blink', 'license' => 'Proprietary' ], self::SAFARI => [ 'name' => 'Safari', 'brand' => 'Apple', 'engine' => 'WebKit', 'license' => 'Proprietary' ] ]; } }
玩转它
<?php // Get an instance of WebBrowser, hydrated with Firefox data $firefox = WebBrowser::get(WebBrowser::FIREFOX); // Instanciated objects are singleton WebBrowser::get(WebBrowser::FIREFOX) === WebBrowser::get(WebBrowser::FIREFOX); // true // The getId() method is always available. // It returns the key used in the getDataSet() method; $firefox->getId(); // 2 // Other methods are ones implemented in the static entity $firefox->getName(); // Firefox // The toId() method transform an entity to ID. // If an id is passed, it is returned as is, after checking it exists. // The method is mainly intended for a setter method to accept both type. WebBrowser::toId($firefox); // 2 WebBrowser::toId(2); // 2 // The getIds() method returns an array of all ids present in data set WebBrowser::getIds(); // [1, 2, 3, 4, 5] // The getAssoc() returns an associative array with `id` as key and `name` as value WebBrowser::getAssociative(); // [1 => 'Chromium', 2 => 'Firefox', ...] // You can also pass the name of an argument you want to use as value WebBrowser::getAssociative('brand'); // [1 => 'Google', 2 => 'Mozilla', 3 => 'Microsoft', ...] // The getAll() method returns an array containing all instances of entities WebBrowser::getAll(); // [Object, Object, ...] // The exists() method check whether the passed ID exists in data set WebBrowser::hasId(3); // true WebBrowser::hasId(9); // false
替代用法
您还可以使用Provider
类。
在这种情况下,您的实体不需要继承AbstractStaticEntity
,但仍需要实现StaticEntityInterface
<?php use Byscripts\StaticEntity\Provider; Provider::get(WebBrowser::class, WebBrowser::FIREFOX); Provider::getAssociative(WebBrowser::class); Provider::getAssociative(WebBrowser::class, 'otherKey'); Provider::getIds(WebBrowser::class); Provider::getAll(WebBrowser::class); Provider::hasId(WebBrowser::class, WebBrowser::CHROMIUM); Provider::toId(WebBrowser::class, $instanceOrId);