zkrati / class-factory
管理类实例的简单库。它处理依赖关系并支持懒加载实例化。
0.1
2016-08-11 08:37 UTC
This package is not auto-updated.
Last update: 2024-09-15 22:47:22 UTC
README
管理类实例的简单库。它处理依赖关系并支持懒加载实例化。
- 为您创建指定类的实例
- 确保一个类只有一个实例
- 处理类的依赖关系
版本
0.1
基本用法
// 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");
很简单,您不需要烦恼实例化依赖。ClassFactory 会为您处理。即使依赖有自己的依赖,ClassFactory 也能应对!
如果您有一个复杂的项目,逐个添加类会很不方便。
// 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);
如果您出于某种原因需要创建某个类的实例,您可以传递创建的实例
$myClass = new Example\ClassName(); // add created instance to ClassFactory $factory->addInstance($myClass); // and than you cen get it $factory->getInstance("Example\ClassName");
异常
如果您想让 ClassFactory 给您一个您没有告诉 ClassFactory 的类的实例,它将抛出 UnknownClassnameException。所以最好捕获它。
try{ // get instance of unknown class $factory->getInstance("Unknown\ClassName"); } catch(UnknownClassnameException $e) { $e->getMessage(); }
许可证
MIT