A persistable Person Entity, Collection, Repository, and Service, written in PHP.
##Installation
Install via composer into your project:
composer require delboy1978uk/person
You can use delboy1978uk/common, which contains Doctrine2 ORM for database persistance, and Pimple as a dependency injection container. You can register the Person DIC items using the Del\Person\PersonPackage object. See delboy1978uk/common for details.
use Del\Commohn\ContainerService;
use Del\Person\PersonPackage;
$package = new PersonPackage();
ContainerService::getInstance()->registerToContainer($config);
The $date
variable is a DateTime object.
$country
is a a Del\Entity\Country object.
use Del\Person\Entity\Person;
$del = new Person();
$del->setFirstname('Derek')
->setMiddlename('Stephen')
->setLastname('McLean)
->setAka('Del Boy')
->setDob($date)
->setBirthplace('Glasgow, Scotland')
->setCountry($country);
Or people, as we might like to call it.
Del\Person\Collection\PersonCollection extends ArrayIterator and contains the following (additional) methods:
$collection->update($person); // Updates the entity in the collection with fresh details
$collection->append($person); // Adds an entity to the collection
$collection->current(); // Retrieves the currently selected Person object
$collection->findKey($person); // Retrieves the array offset key for any Person in the collection
$collection->findById($id); // Retrieves a Person from the collection by their Id
Del\Person\Service\PersonService contains a few methods for dealing with Person objects.
$svc->createFromArray($data); // Person object factory method accepting an array
$svc->toArray($person); // Pass a Person, receive an array
$svc->savePerson($person); // Saves a Person (adds or updates) to the database
$svc->getRepository(); // Gets the Person Repository
$svc->findByCriteria($criteria); // Finds results based upon your Criteria (see below)
$svc->findOneByCriteria($criteria); // As above but for a single result
Set the criteria for your searches using this object.
use Del\Person\Criteria\PersonCriteria;
$criteria = new PersonCriteria();
$criteria->setFirstname('Derek');
$criteria->setLastname('McLean');
$results = $svc->findByCriteria($criteria); // array of Person objects