类 - 在构造函数中需要冲突

时间:2013-05-08 15:04:22

标签: php wordpress scope require

我正在编写一个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插件具有相同名称的函数,它是否会产生冲突?

2 个答案:

答案 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();

现在您确定要调用的功能。