如何删除包含文件?

时间:2015-07-17 14:34:12

标签: php include

我的页面中包含两个文件。像这样:

// mypage.php
include 'script1.php';
include 'script2.php';

我首先需要它们,然后我需要删除其中一个,类似这样:

if ($var == 'one') {
      // inactive script1.php file
} else {
     // inactive script2.php file
}

很难解释为什么我需要停用其中一个,我只是想知道,我该怎么做?可能与include不同吗?

5 个答案:

答案 0 :(得分:3)

简单的答案是否定的,你不能。

扩展的答案是,当你运行PHP时,它会进行两次传递。第一遍将PHP编译成机器代码。这是添加include的地方。第二遍是从第一遍开始执行代码。由于编译过程是include完成的地方,因此无法在运行时将其删除。

由于你遇到了一个函数冲突,这里是如何使用对象(类)来解决这个问题

class Bob {
    public static function samename($args) {

   }
}
class Fred {
   public static function samename($args) {

   }
}

请注意,这两个类都具有samename()函数,但它们位于不同的类中,因此不存在冲突。因为它们是static,所以你可以这样称呼它们

Bob::samename($somearghere);
Fred::samename($somearghere);

答案 1 :(得分:0)

你唯一的选择就是这样:

if ($var == 'one') {
      include('script2.php');
} else {
     include('script1.php');
}

您无法“删除”代码,您只能选择不首先包含/执行代码。

答案 2 :(得分:0)

正如您的评论所说,因为重复的函数名称,我假设你在其他地方单独使用这两个文件,但你现在想要实现的是将这些文件合并在一起,原因不同(两个文件都有函数/你需要的变量等)

如果您的第一个文件具有类似my_function的功能:

my_function() {
    // code here
}

并且您的第二个文件也具有相同的命名函数,您可以在其周围包装if语句以将其排除:

if (!function_exists('my_function')) {
    my_function() {
        // code here
    }
}

这样,当将两个文件合并在一起时,第二个文件的功能将不可用,但是单独使用文件这两个函数都可用。

答案 3 :(得分:0)

如果您只需要输出任一文件,则可以执行此操作

ob_start();
include('file1.php');
$file1 = ob_get_contents();

ob_start();
include('file2.php');
$file2 = ob_get_contents();

然后如果你需要打电话给他们

if ($var == 'one') {
    echo $file2;
} else {
    echo $file1;
}

答案 4 :(得分:0)

为了给其他人提供选择,以及我偶尔使用过的解决方案...

如果您包含的文件,您包含某些具有返回值的功能或某些不需要在页面上显示的执行(例如邮件发送),并且让我们说你不能改变任何一个目标文件(让他们说他们是其他人的代码或某些高度的一部分整合了其他

另一种解决方案是为两个文件创建一个休息接口,从中提取所需内容,然后使用您的程序调用该接口,有效地绕过了包含它们的需要。