chippyash / identity
Class Identity Management
Installs: 2 413
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: >=5.6
- chippyash/strong-type: >=5,<6
Requires (Dev)
- phpunit/phpunit: >=5.7.9,<6
README
Quality Assurance
See the Test Contract
What?
Provides a simple helper capability for class Identity management
Why?
This is one of those bits of code you write over and over. Many applications require
the classes they use to have some form of Identity. Typically in data driven applications
this will equate to the id
primary key field. This library provides support for that.
Roadmap
If you want more, either suggest it, or better still, fork it and provide a pull request.
Check out ZF4 Packages for more packages
How
Coding Basics
The code is supplied as an interface and a trait. Simply declare your class as
implementing the Identifiable
interface and then use the Identifying
trait in the
class to supply the functionality.
Identities are based on Chippyash\Type\Interfaces\TypeInterface. This allows for strong typing and enforcement of identity rules. For instance, here is an example of a product id that is a fixed length digit string.
use Chippyash\Type\String\DigitType; /** * A unique identifier */ class Identifier extends DigitType { /** * Length of product id, it will be front padded with zeros to this length * or cut to this length * * @var int */ protected $length = 10; /** * @return int */ public function getLength() { return $this->length; } /** * @param mixed $value * * @return string */ protected function typeOf($value) { $v = parent::typeOf($value); if (strlen($v) > $this->length) { return substr($v, -$this->length); } return str_pad($v, $this->length, '0',STR_PAD_LEFT); } }
Your class can then simpy use it thus:
use Chippyash\Identity\Identifiable; use Chippyash\Identity\Identifying; class Product implements Identifiable { use Identifying; public function __construct(Identifier $id) { $this->id = $id; //or maybe there is some other way of establishing the identity } } $product = new Product(new Identifier(53)); $id = $product->id(); // returns Identifier $vId = $product->vId(); //returns '0000000053' $vId = $product->id()->get(); //returns '0000000053'
Changing the library
- fork it
- write the test
- amend it
- do a pull request
Found a bug you can't figure out?
- fork it
- write the test
- do a pull request
NB. Make sure you rebase to HEAD before your pull request
Or - raise an issue ticket.
Where?
The library is hosted at Github. It is available at Packagist.org
Installation
Install Composer
For production
"chippyash/identity": ">=1,<2"
For development
Clone this repo, and then run Composer in local repo root to pull in dependencies
git clone git@github.com:chippyash/identity.git cd identity composer update
To run the tests:
cd identity vendor/bin/phpunit -c test/phpunit.xml test/
License
This software library is released under the BSD 3 Clause license
This software library is Copyright (c) 2015, Ashley Kitson, UK
History
V1.0.0 Original release
V1.0.1 Updates for build running
V1.0.2 Documentation update
V1.0.3 composer.json fix
V1.0.4 dependency update
V1.1.0 Change of license from GPL V3 to BSD 3 Clause