ts / dataobject
Simple data objects and enumerations in PHP.
Installs: 284
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
pkg:composer/ts/dataobject
This package has no released version yet, and little information is available.
README
Simple data objects and enumerations in PHP.
Requirements
All of my components require PHP >= 5.4.
Installation
Use Composer to install: composer require ts/dataobject:~2.0
Basic example
An enumeration can be used when you need to define a list of values that you ideally wanted to be able to type-hint, as in this example using the common request methods implemented in 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'; }
The final
keyword enforces that the enumeration cannot be extended further. Now, if you wanted to use any of those
pre-defined constants, you'd call them in this way:
function handleRequest(RequestMethod $method, ...) { ... } // Give a specific instance of the enumeration to the function $response = handleRequest(RequestMethod::GET(), ...);
Multiton example
Multitons are akin to Java's enums and can contain a lot more logic, can have their own methods, constants, etc, but still define a fixed set of instances.
Take a look at this common example using our solar system's planets:
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(); } }
Calculation your body's weight on another planet is now as simple as calling:
$weight = 175; $mass = $weight / Planet::EARTH()->getSurfaceGravity(); $marsWeight = Planet::MARS()->getSurfaceWeight($mass); // 66.279359