是否可以在PHP中使用函数包含文件?我已经尝试了一些东西,但脚本中没有包含该文件。
我正在使用此功能:
function run($entry_point){
if(!empty($entry_point)){
if(file_exists('assets/controllers/'.$entry_point.'.php'))
include 'assets/controllers/'.$entry_point.'.php';
else
include 'assets/controllers/home.php';
}
}
我的问题是,使用这种功能,索引不会包含$entry_point
文件。
Index.php
代码:
session_start();
run($_GET['location']);
谢谢!
答案 0 :(得分:0)
首先:你的功能对我有用。确保文件夹的名称正确无误并启用错误报告(error_reporting(E_ALL); ini_set("display_errors", 1);
)。
有不同的方法可以将文件动态地包含在脚本中。
常见的框架使用类似的东西(根据你的情况稍微修改):
function includeScript($path = 'assets/controllers/',$file = 'home'){
require $path . $file . '.php';
}
如果您要包含课程,请考虑使用autoloader:
function my_autoloader($class) {
include 'assets/controllers/' . $class . '.php';
}
spl_autoload_register('my_autoloader');
这样做的是,每当您想要使用未定义的类时,它都会自动查找名为assets/controllers/
文件夹中的类的文件。 E.g:
// the autoloader would look for assets/controllers/Class1.php
$obj = new Class1();
答案 1 :(得分:0)
Autoloader将是理想的候选人。但是,你的功能对我来说很好。 你能对脚本进行以下修改吗?
在资产之前添加__ DIR __常量。这条线将成为:
if(file_exists(__ DIR __。' / assets / controllers /'。$ entry_point。' .php')) 包括__ DIR __。' / assets / controllers /'。$ entry_point。' .php&#39 ;; 其他 包括__ DIR __。' /assets/controllers/home.php' ;;
P.S。 :请使用大括号进行条件逻辑。它使代码更具可读性。