PHP中XML的依赖注入
我目前正在尝试实现一个简单的依赖项注入容器,它使用XML定义类依赖项。我的问题主要与设计有关 下面是我正在考虑使用的XML模式示例:PHP中XML的依赖注入,php,xml,oop,dependency-injection,Php,Xml,Oop,Dependency Injection,我目前正在尝试实现一个简单的依赖项注入容器,它使用XML定义类依赖项。我的问题主要与设计有关 下面是我正在考虑使用的XML模式示例: <?xml version="1.0"> <classes> <class name="MySQLDatabase"> <namespace>MyLib\Database\</namespace> <dependency type="constant">
<?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>
MyLib\数据库\
我的\u db\u用户名
我的密码
我的数据库
MyLib\身份验证\
MySQLDatabase
我的第一个问题是,是否有人预见到类似于上述模式的任何问题
我的第二个问题是,我应该如何将其转换为My definitions数组?这个问题不是关于如何解析XML,而是关于在解析后保存信息的数组的设计
如果我是用Java编写的,我会想到类似的东西,但我不确定这是否太庞大,以及如何将其转换为PHP,因为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
// ...
}
类二类{
公共哈希映射定义;
//范例
//定义=以下类别的地图
// ...
}
类定义{
私有字符串名称;
私有字符串名称空间;
私有列表依赖关系;
//范例
//name=MySQLDatabase
//namespace=MyLib\Database\
//依赖项=下面的类列表,按顺序排列
// ...
}
类依赖{
私有字符串名称;
私有字符串类型;
//范例
//name=my_db_用户名
//类型=常数
// ...
}
我的最后一个问题是,添加持久性的定义怎么样?例如,数据库类应该是单例的。我是否应该在XML文件的类定义中添加一个额外的
标记
谢谢你的关注
我的第一个问题是,是否有人预见到类似于上述模式的任何问题
你在重新发明轮子。PHP是一种脚本语言,因此您也可以使用PHP文件来代替XML文件,因为-well-PHP:)更具表现力
我的第二个问题是,我应该如何将其转换为My definitions数组?这个问题不是关于如何解析XML,而是关于在解析后保存信息的数组的设计
您可以通过先模拟数组,然后向后思考来实现这一点,比如如何将数组中的信息存储到XML文件中,或者干脆完全删除XML,然后加载数组(参见上面的要点)
我的最后一个问题是,添加持久性的定义怎么样?例如,数据库类应该是单例的。我应该在XML文件的类定义中添加一个额外的标记吗
如果你需要一个单例,实例化它们一次就可以了。在PHP中通常不需要单例持久性。这是一个很大的误解(如果您来自Java背景,这会提供一个很好的见解:(必读)
也可参见以下相关问题: