类——在构造函数中要求冲突


Classes - require conflict in constructor

我正在编写一个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

这意味着可以有冲突