我正在编写一个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插件具有同名函数,它是否会产生冲突?
即使名称相同,如果定义为类方法,函数的作用域也会不同。要调用一个常规函数,您将执行以下操作:
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();
现在你确定你正在调用的函数
当包含一个文件时,它所包含的代码将继承该变量发生包含的行的作用域。任何可用的变量在调用文件的那一行将在被调用的范围内可用档案,从那时起。然而,所有的函数和类包含文件中定义的全局作用域为。
from include
in PHP manual
这意味着可以有冲突