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