PHP&回顾如何在不事先知道课程的情况下进行回顾

时间:2014-02-12 08:28:35

标签: php reflection

我想使用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目录的内容可用?

此致 沃纳

1 个答案:

答案 0 :(得分:1)

您需要在运行时包含它,这意味着您必须遵循命名文件的约定,或者您必须拥有每个文件所在位置的大量数据。假设SomeClass.php包含一个名为SomeClass的类,当你执行

new RetrospectionClass($className);

你会先做

include_once '../FilesDir/'.$className.'.php'