Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP&;回顾如何在不事先知道课程的情况下进行回顾_Php_Reflection - Fatal编程技术网

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

PHP&;回顾如何在不事先知道课程的情况下进行回顾,php,reflection,Php,Reflection,我想使用回顾来调用我不知道的类上的特定函数 我有一个存储PHP文件的目录。我的当前PHP类存储在另一个目录中,如下所示: C:/ PHP-dir | ---FilesDir | | | ----SomeClass.php | ----OtherClass.php | ---MyProgDir | ----MyClassWithRetrospection

我想使用回顾来调用我不知道的类上的特定函数

我有一个存储PHP文件的目录。我的当前PHP类存储在另一个目录中,如下所示:

C:/ PHP-dir
      |
      ---FilesDir
      |    |
      |    ----SomeClass.php
      |    ----OtherClass.php
      |
      ---MyProgDir
           |
           ----MyClassWithRetrospection.php
在MyClassWithRetrospection中,我从FilesDir中读取所有文件,从文件名中去掉“.php”,并将结果字符串用作类名

因此,如果我执行“new RetrospectionClass('SomeClass');”,我会得到一个异常,告诉我在MyClassWithRetrospection所在的目录中找不到某个类。 嗯,我知道

由于我不知道filedir中包含哪些类,因此无法在MyClassWithRetrospection.php文件中执行include/required

那么,有人知道如何在运行时使FilesDir目录的内容可用吗

问候,,
Werner

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

新的回顾类($className)

你会先做的


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

“目录中的文件”和“类”是两个完全不同的东西。它失败不是因为它“在目录中找不到类”,而是因为包含类定义的文件未被
include
d.deceze,您是对的。我应该解释一下,我的类定义是这样的:每个文件都用文件名(不包括“.php”)表示一个类。我不知道您可以在运行时这样做。我会试试看,然后告诉你。是的!这就是解决办法。谢谢你,戴夫。