ts / dataobject
此包已被废弃,不再维护。未建议替代包。
PHP中的简单数据对象和枚举。
此包尚未发布任何版本,可用的信息很少。
README
PHP中的简单数据对象和枚举。
需求
我的所有组件都需要PHP >= 5.4。
安装
使用 Composer 安装: composer require ts/dataobject:~2.0
基本示例
当您需要定义一组值,这些值理想上应该能够进行类型提示时,可以使用枚举,例如,在以下示例中使用HTTP中实现的常见请求方法
use TS\DataObject\Multiton\Enumeration; final class RequestMethod extends Enumeration { const CONNECT = 'CONNECT'; const DELETE = 'DELETE'; const GET = 'GET'; const HEAD = 'HEAD'; const OPTIONS = 'OPTIONS'; const POST = 'POST'; const PUT = 'PUT'; const TRACE = 'TRACE'; }
使用 final
关键字强制枚举不能进一步扩展。现在,如果您想使用这些预定义的常量之一,您可以这样调用它们
function handleRequest(RequestMethod $method, ...) { ... } // Give a specific instance of the enumeration to the function $response = handleRequest(RequestMethod::GET(), ...);
多例示例
多例 类似于 Java 的枚举,可以包含更多逻辑,可以有自己的方法、常量等,但仍然定义一组固定的实例。
看看这个使用我们太阳系行星的常见示例
use TS\DataObject\Multiton\Multiton; final class Planet extends Multiton { /** * Gravitational constant. * * @var float */ const G = 6.67300E-11; /** * @var float */ private $mass; /** * @var float */ private $radius; /** * Array that defines each instance's data. * * @var array */ protected static $data = [ ['MERCURY', 3.302e23, 2.4397e6], ['VENUS', 4.869e24, 6.0518e6], ['EARTH', 5.9742e24, 6.37814e6], ['MARS', 6.4191e23, 3.3972e6], ['JUPITER', 1.8987e27, 7.1492e7], ['SATURN', 5.6851e26, 6.0268e7], ['URANUS', 8.6849e25, 2.5559e7], ['NEPTUNE', 1.0244e26, 2.4764e7], // Poor Pluto =( // ['PLUTO', 1.31e22, 1.180e6], ]; /** * @param string $key * @param float $mass * @param float $radius */ protected function __construct($key, $mass, $radius) { parent::__construct($key); $this->mass = $mass; $this->radius = $radius; } /** * @return float */ public function getSurfaceGravity() { return self::G * $this->mass / ($this->radius * $this->radius); } /** * @param float $otherMass * * @return float */ public function getSurfaceWeight($mass) { return $mass * $this->getSurfaceGravity(); } }
计算您在另一颗行星上的体重现在只需调用
$weight = 175; $mass = $weight / Planet::EARTH()->getSurfaceGravity(); $marsWeight = Planet::MARS()->getSurfaceWeight($mass); // 66.279359