PHP通过函数包含文件

时间:2015-05-20 18:12:25

标签: php function file include

是否可以在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']);

谢谢!

2 个答案:

答案 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将是理想的候选人。但是,你的功能对我来说很好。 你能对脚本进行以下修改吗?

  1. 启用错误报告并显示错误。有关详细信息,请参阅Mark的答案。
  2. 在资产之前添加__ DIR __常量。这条线将成为:

    if(file_exists(__ DIR __。' / assets / controllers /'。$ entry_point。' .php'))         包括__ DIR __。' / assets / controllers /'。$ entry_point。' .php&#39 ;;     其他         包括__ DIR __。' /assets/controllers/home.php' ;;

  3. P.S。 :请使用大括号进行条件逻辑。它使代码更具可读性。