Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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 - Fatal编程技术网

如何在php中动态包含

如何在php中动态包含,php,Php,您好,我想在php中动态包含 在那里我可以发送我想要的页面作为参数,只发送页面而不发送目录 正在按以下方式尝试,但不起作用: 这是Loadclassphp.php: <?php class Loadclass{ public static function load($url) { foreach($url as $b) { include "$b.php"; } }

您好,我想在php中动态包含

在那里我可以发送我想要的页面作为参数,只发送页面而不发送目录

正在按以下方式尝试,但不起作用:

这是Loadclassphp.php:

<?php
class Loadclass{
public static function load($url)
{   

        foreach($url as $b)
                {
               include "$b.php";
                }


} 
}

?>

谢谢你的帮助…

我想你可以考虑使用自动装弹机。见参考资料:

本质上,您定义了一个特殊函数,该函数在每次加载类时都被调用。 在函数中,您可以定义规则和其他规则,并包含正确的文件


然后你所要做的就是做一些事情,比如
$menu=new$menu($parameters)自动加载程序将为您包含该文件。

您的PHP脚本必须位于正确的目录中,才能包含作为数组传递的文件

所以,若您必须多次调用load来加载不同目录中的文件,那个么您还必须传递目录。然而,如果您的所有文件总是驻留在一个目录中(这是非常糟糕的做法),那么您就可以不通过该目录而生存

这里有一种方法,它会自动加载目录中的所有php文件,无需传递数组

function load_all( $dir )
{
    foreach ( glob($dir.'/*.php') as $filename )
    {
        include $filename;
    }
}
或者,如果要包括选择性文件,则:

function load_all_f( $dir, $files )
{
    foreach ( $files as $filename )
    {
        include $dir.DIRECTORY_SEPARATOR.$filename;
    }
}

希望它能对您有所帮助。

您要加载的代码看起来应该可以正常工作,但您可能遇到了寻路问题,因为代码位于错误的目录中

但您提到需要动态包含,这是一个与或解决的问题:

干得好 这是我的
autoload.inc
文件,我用来在5.3(支持名称空间)中包含OOP PHP。您必须确保您的目录路径结构与您的命名空间名称匹配(无论您是否使用此自动加载程序,它都应该匹配)


定义“不起作用”。你有错误吗?有关于尝试包含不存在的文件的通知吗?它整天坐在沙发上吃垃圾食品吗?不要因为这个。。。函数真的不应该影响全局性的东西。只需
包含$filename。目录操作器$文件名谢谢,我在想:)如果传递的$dir没有用目录分隔符作为后缀(在真正的操作系统上是
/
,在Windows上是
\
),那么它就不能正常工作。在它们之间添加
DIRECTORY\u SEPARATOR
,就像我在第一条评论中建议的那样(但是拼写错误得很厉害的'SEPARATOR':O)。没有理由只使用一次
require\u
——在包含类之后,不会再次调用autoload函数来加载同一个类。另外,
[require | include]\u once
[require | include]
慢,因为它必须在以前包含的文件列表中查找(可能会变得很大)以查看是否不存在该文件already@shesek,说得好。当我进行基准测试时,我会记住这一点。
function load_all_f( $dir, $files )
{
    foreach ( $files as $filename )
    {
        include $dir.DIRECTORY_SEPARATOR.$filename;
    }
}
<?php

function autoload( $class )
{
  require_once( __DIR__ . DIRECTORY_SEPARATOR . str_replace( '\\', DIRECTORY_SEPARATOR, $class ) . '.inc');
}

spl_autoload_register( 'autoload' );
include('Foo.inc');
include('Bar.inc');
include('Baz.inc');
...etc...