zkrati / class-factory
Simple library to manage class instances. It handles dependencies and supports lazy instantiating.
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-09-14 07:50:37 UTC
README
Simple library to manage class instances. It handles dependencies and supports lazy instantiating.
- create instances of given classes for you
- ensures that there is only single instance of one class
- handles dependencies of the class
Version
0.1
Basic usage
// create ClassFactory $factory = new Zkrati\ClassManagement\ClassFactory(); // add class to ClassFactory, where first argument is a class name and second argument is an array of dependencies $factory->addClass("Example\ClassName", array("First\Dependency", "Second\One"); // get instance of the class $factory->getInstance("Example\ClassName");
simple right? You don´t need to bother with instantiating dependencies what so ever. ClassFactory handles that for you. Even dependencies can have it´s own dependencies. No problem for ClassFactory!
If you make a complex project it would be uncomfortable adding classes one by one.
// create array like this one. Manualy in the code or parse from config file. array(3) { ["Url\UrlTools"]=> array(1) { [0]=> string(22) "Nette\Database\Context" } ["Nette\Database\Context"]=> array(2) { [0]=> string(25) "Nette\Database\Connection" [1]=> string(24) "Nette\Database\Structure" } ["Nette\Database\Structure"]=> array(2) { [0]=> string(25) "Nette\Database\Connection" [1]=> string(34) "Nette\Caching\Storages\FileStorage" } } // give this group of classes to ClassFactory $factory->addMultiple(array_of_classes);
If you need to create your own instance of some class for some reason, you can pass the created instance
$myClass = new Example\ClassName(); // add created instance to ClassFactory $factory->addInstance($myClass); // and than you cen get it $factory->getInstance("Example\ClassName");
Exceptions
If you want ClassFactory to give you an instance of a a class you didn´t tell ClassFactory about, it will throw UnknownClassnameException. So it is a good idea to catch it.
try{ // get instance of unknown class $factory->getInstance("Unknown\ClassName"); } catch(UnknownClassnameException $e) { $e->getMessage(); }
License
MIT