我想使用Retrospection来调用我不认识的类上的特定函数。
我有一个存储PHP文件的目录。我有另一个目录,我的当前PHP类存储如下:
C:/ PHP-dir
|
---FilesDir
| |
| ----SomeClass.php
| ----OtherClass.php
|
---MyProgDir
|
----MyClassWithRetrospection.php
在MyClassWithRetrospection中,我从FilesDir读取所有文件,我从文件名中删除'.php',并将结果字符串用作类名。
所以,如果我做一个“新的RetrospectionClass('SomeClass');”我得到一个异常,告诉我它在MyClassWithRetrospection所在的目录中找不到SomeClass。 呃,我知道。
由于我不知道FilesDir中有哪些类,我无法在MyClassWithRetrospection.php文件中执行include / required。
那么有谁知道如何在运行时使FilesDir目录的内容可用?
此致 沃纳
答案 0 :(得分:1)
您需要在运行时包含它,这意味着您必须遵循命名文件的约定,或者您必须拥有每个文件所在位置的大量数据。假设SomeClass.php包含一个名为SomeClass的类,当你执行
时 new RetrospectionClass($className);
你会先做
include_once '../FilesDir/'.$className.'.php'