如何在php中运行脚本时禁用函数
我在根目录中有一个主php文件,它被其他几个文件包含在不同的目录中,如果被其他文件包含,我不想允许在主文件中编写的一些函数执行。 我运行了一个测试代码,并试图通过在包括上重新声明函数来覆盖该函数,但它返回了一个错误: a.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
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();