我正在编写一个Wordpress插件,我不确定函数名冲突..
我有一个名为test_handling.php
的文件,其中包含以下内容:
function testing() { echo 'test'; }
我将此文件包含在类构造函数(名为testcls.class.php
的文件)中:
class TestCls {
function __construct() {
require_once('test_handling.php');
testing();
}
function otherfunction() {
testing();
}
// ...
}
在这种情况下,我想知道testing()
函数是否仅在TestCls
类中可用,或者如果其他WP插件具有相同名称的函数,它是否会产生冲突?
答案 0 :(得分:2)
来自当包含文件时,它包含的代码会继承该变量 包含发生的行的范围。任何可用的变量 在调用文件中的那一行将在被调用的内容中可用 文件,从那时起。 但是,所有功能和类 在包含文件中定义的具有全局范围。
include
in PHP manual 的
这意味着是的,你可能会有冲突。
答案 1 :(得分:2)
即使名称相同,如果定义为类方法,函数也会有不同的范围。要拨打常规功能,您将执行以下操作:
testing();
,结果将是:
'test'
类方法需要类的实例或静态调用。要调用方法类,您需要以下格式:
$class->test();
或
OtherPlugin::test();
总之,如果定义为类方法,函数测试将会有所不同。然后,你不会有冲突。
封装函数并确保使用正确函数的其他方法是使用名称空间。如果在test_handling.php中使用命名空间
<?php
namespace myname;
function testing(){echo 'test';}
?>
您将按如下方式访问功能测试:
<?php
require_once "test_handling.php";
use myname;
echo myname\testing();
现在您确定要调用的功能。