我目前正在尝试实现一个简单的依赖注入容器,它使用 XML 来定义类依赖项。我的问题主要与设计有关。
这是我正在考虑使用的示例 XML 模式:
<?xml version="1.0">
<classes>
<class name="MySQLDatabase">
<namespace>MyLib\Database\</namespace>
<dependency type="constant">my_db_username</dependency>
<dependency type="constant">my_db_password</dependency>
<dependency type="constant">my_db_database</dependency>
</class>
<class name="LoginManager">
<namespace>MyLib\Authentication\</namespace>
<dependency type="class">MySQLDatabase</dependency>
</classes>
</classes>
我的第一个问题是,有没有人预见到类似于上述模式的任何问题?
我的第二个问题是,我应该如何将其转换为我的定义数组?这个问题不是关于如何解析 XML,而是关于在解析后保存信息的数组的设计。
如果我用 Java 编写代码,我会考虑这样的事情,但我不确定这是否太庞大以及如何将其转换为 PHP,它似乎没有与 Java 相同数量的数据结构做。
class DIClass {
public HashMap<String, ClassDefinition> definitions;
// example
// definitions = map of the classes below
// ...
}
class ClassDefinition {
private String name;
private String namespace;
private List<Dependency> dependencies;
// example
// name = MySQLDatabase
// namespace = MyLib\Database\
// dependencies = list of the class below, ordered
// ...
}
class Dependency {
private String name;
private String type;
// example
// name = my_db_username
// type = constant
// ...
}
我的最后一个问题是,为持久性添加一个定义怎么样?例如,数据库类应该是单例。<persis />
我应该在 XML 文件的类定义中添加一个额外的标签吗?
感谢您的关注。