我的页面中包含两个文件。像这样:
// mypage.php
include 'script1.php';
include 'script2.php';
我首先需要它们,然后我需要删除其中一个,类似这样:
if ($var == 'one') {
// inactive script1.php file
} else {
// inactive script2.php file
}
很难解释为什么我需要停用其中一个,我只是想知道,我该怎么做?可能与include
不同吗?
答案 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)
为了给其他人提供选择,以及我偶尔使用过的解决方案...
如果您包含的文件,您包含某些具有返回值的功能或某些不需要在页面上显示的执行(例如邮件发送),并且让我们说你不能改变任何一个目标文件(让他们说他们是其他人的代码或某些高度的一部分整合了其他
另一种解决方案是为两个文件创建一个休息接口,从中提取所需内容,然后使用您的程序调用该接口,有效地绕过了包含它们的需要。