PHP:包含未知文件夹中的已知文件名

PHP:包含未知文件夹中的已知文件名,php,php-include,Php,Php Include,我正在制作一个网站,一个朋友正在制作的游戏的技术树。“科技三号”本身只是一个从一个页面到另一个页面的链接列表。每个页面的变量存储在一个php文件中,例如:mining.php。我不想在一个文件夹中有大量的文件列表。到目前为止,我所能做的只是用以下方法将它们排序到树的第一个分支中: $path = glob('tree/*/'.$page.'.php'); if ($path[0]) { include $path[0]; 理想情况下,我希望能够从树中的任何位置访问该文件。 e、 g:文

我正在制作一个网站,一个朋友正在制作的游戏的技术树。“科技三号”本身只是一个从一个页面到另一个页面的链接列表。每个页面的变量存储在一个php文件中,例如:mining.php。我不想在一个文件夹中有大量的文件列表。到目前为止,我所能做的只是用以下方法将它们排序到树的第一个分支中:

$path = glob('tree/*/'.$page.'.php');
if ($path[0]) {
    include $path[0];
理想情况下,我希望能够从树中的任何位置访问该文件。

e、 g:文件mining.php将位于tree/strength/mining.php。文件pickaxe.php将位于tree/strength/mining/pickaxe.php。但我可以用相同的include包含其中任何一个。我可以使用什么从树文件夹中的任何文件夹或子文件夹中获取已知文件名。

这不是
include
的工作方式。如果您想继续,请浏览文件夹并检查
是否为_file
,然后您可以
包含
,或者更好的是,
要求_一次

这不是
包含
的工作方式。如果您想继续,请浏览文件夹并检查
是否为_文件
,然后您可以
包括
,或者更好的是,
要求_一次
,我建议您使用

这将使您不仅可以按路径分隔类,还可以按概念分隔类

这里有一个例子。假设您在路径树/strength/Mining.php中有class
Mining
,如果您给了该类一个
namespace tree\strength
,您会立即知道该类所在的位置。您甚至可以使用自动加载程序让它解析文件并自动加载

Autloader示例改编自

我建议您使用

这将使您不仅可以按路径分隔类,还可以按概念分隔类

这里有一个例子。假设您在路径树/strength/Mining.php中有class
Mining
,如果您给了该类一个
namespace tree\strength
,您会立即知道该类所在的位置。您甚至可以使用自动加载程序让它解析文件并自动加载

Autloader示例改编自


我为自己找到了答案(花了我几个小时,但这将使我更容易对最终拥有的数百个文件进行排序):


只需确保你知道你有多少个文件夹,并使
(count=#)更高。

我为自己找到了答案(这花了我几个小时,但这将使我更容易对最终拥有的数百个文件进行排序):


只需确保您知道自己有多少个文件夹,并将
(count=#)设置得更高。

如果您这样做,请遵循。它更容易理解,也会让你的生活变得更轻松。在我回来检查答案之前,我已经找到了自己的答案。对不起,我浪费了你的时间。如果你这样做,请跟我来。它更容易理解,也会让你的生活变得更轻松。在我回来检查答案之前,我已经找到了自己的答案。对不起,我浪费了你的时间。
<?php   
spl_autoload_register(function ($class) {

   $base_dir = __DIR__; //Directory where your "package" lives

    $file = $base_dir . str_replace('\\', '/', $class) . '.php';

    // if the file exists, require it
    if (is_readable($file)) {
        require $file;
    }
});
$count = 0;
$path = 'tree/*/';
$file = glob($path.$page.'.php');
while ((strpos($file[0], $page) == false) and ($count != 10)) {
    $file = glob($path.$page.'.php');
    $path .= '*/';
    $count++;
}
if (strpos($file[0], $page) == true) {
    include $file[0];