如何在php中运行脚本时禁用函数

如何在php中运行脚本时禁用函数,php,function,Php,Function,我在根目录中有一个主php文件,它被其他几个文件包含在不同的目录中,如果被其他文件包含,我不想允许在主文件中编写的一些函数执行。 我运行了一个测试代码,并试图通过在包括上重新声明函数来覆盖该函数,但它返回了一个错误: a.php <?php function show(){echo "a";}//This is what I want to over-ride with include 'b.php'; <?php function show(){echo "b";}//This

我在根目录中有一个主php文件,它被其他几个文件包含在不同的目录中,如果被其他文件包含,我不想允许在主文件中编写的一些函数执行。 我运行了一个测试代码,并试图通过在包括上重新声明函数来覆盖该函数,但它返回了一个错误:

a.php

<?php
function show(){echo "a";}//This is what I want to over-ride with
include 'b.php';
<?php
function show(){echo "b";}//This is the function i want to restrict.
show();

不能重新声明函数。您需要为每个函数使用唯一的名称

这些函数不会仅仅因为包含它们所在的文件而执行。除非您在文件中主动调用它们

我建议您评估包含文件以解决问题的方式。您可能还需要研究include\u once/require\u once和函数存在条件

例如


最好的方法是使用PHP,它允许您指定方法的可见性。

您可以在函数中检查是否包含“主文件”,请尝试以下操作:

function someFunction() {
    if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])) {
        echo "Not included.";       
    } else {
        echo "Included. No access.";
    }
}
或者将条件放在函数定义的“外部”,这样如果包含该文件,就不会定义该条件


但是我会采用面向对象的方法。

您可以使用匿名函数(PHP5.3)来实现这一点


现在将
回显“b”

为什么要这样做?请添加尝试过的代码!!!有一个很好的例子:我不希望其他人可以访问主文件中定义的几个函数。另一个选项是名称空间。@u_mulder原始函数不能在PHP中使用名称空间。我实际上正在寻找一种方法来限制它们。
function someFunction() {
    if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])) {
        echo "Not included.";       
    } else {
        echo "Included. No access.";
    }
}
$show = function(){
    echo "a";
};
$show = function(){
    echo "b";
};
$show();