在PHP中导入用户子类

时间:2012-11-20 11:36:46

标签: php

我编写了一个包含一些抽象类的小型PHP引擎。引擎的用户必须实现这些抽象类的子类,并将其子类提供给引擎。引擎必须能够创建和操作这些子类的实例,因此用户不能只创建实例并将其传递给引擎。

所以我需要一种方法让用户将他们的子类传递给引擎。一个显而易见的方法是强制用户给这些子类一个特定的名称并将它们放在一个特定的目录中,但这似乎不合时宜。知道PHP可以在变量中存储类,我首先尝试将类存储在常量中,因此我有一个文件,其中包含一些define用户将用其子类的名称和路径填充的文件。这不起作用 - 似乎PHP不能在常量中存储类,只能存储变量。

所以现在我正在尝试相同的方法,但是使用变量而不是常量。有一个文件UserIncludes.lib.php,其中用户需要将两个变量设置为其子类的名称。然后,这些变量用于在整个引擎代码中调用这些子类。我不确定这是一个好的系统,特别是因为需要使用global关键字将变量导入到需要它们的每个函数中,从而增加了引擎上的文书和心理负荷。

那么在PHP中执行此类操作的最佳做​​法是什么?这似乎是一项相当普遍的任务。

1 个答案:

答案 0 :(得分:0)

只需使用namespaces,并使用正确的autoload function

这样文件系统就变成了一个透明层,你只依赖于命名约定 - 这是“强制用户给这些子类赋予特定名称并将它们放在特定目录中”实际上,但它的效果非常好。