你好我想在php中动态包含...
我可以将参数发送到我想要的页面,只有页面而不是目录......
尝试如下,但没有奏效:
这是Loadclassphp.php:
<?php
class Loadclass{
public static function load($url)
{
foreach($url as $b)
{
include "$b.php";
}
}
}
?>
这是我打电话的地方:
include_once 'Loadclassphp.php';
$arr = array(1 => "menu",2 => "client");
Loadclass::load($arr);
感谢您的帮助...
答案 0 :(得分:2)
我认为您可以考虑使用自动加载器。请参阅参考:http://au.php.net/manual/en/language.oop5.autoload.php
基本上,您定义了一个特殊的函数,每次加载一个类时都会调用该函数。 在该功能中,您可以定义规则和不包含规则,并包含正确的文件。
然后你需要做的就是做$menu = new $menu($parameters);
之类的事情,自动加载器会包含你的文件。
答案 1 :(得分:0)
您的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;
}
}
希望它对你有所帮助。
答案 2 :(得分:0)
您要加载的代码看起来应该可以正常工作,但是您可能遇到了代码位于错误目录中的路径查找问题。
但是你提到你想要动态包含,这是__autoload
或spl_autoload_register
已解决的问题:
这是我用来在5.3中包含OOP PHP的autoload.inc
文件(支持命名空间)。您必须确保您的目录路径结构与您的命名空间名称相匹配(无论您是否使用此自动加载器,都应该这样做。)
<?php
function autoload( $class )
{
require_once( __DIR__ . DIRECTORY_SEPARATOR . str_replace( '\\', DIRECTORY_SEPARATOR, $class ) . '.inc');
}
spl_autoload_register( 'autoload' );
我使用了require_once
,因为它触发了很好的可捕获错误,我可以使用Exceptions
转换为set_error_handler
;如果您愿意,可以将其更改为require
,include
或include_once
。
如果您不想使用.inc
文件,可能还需要更改文件后缀。
我发现include('autoload.inc')
比
include('Foo.inc');
include('Bar.inc');
include('Baz.inc');
...etc...