使用包含一次的静态方法并在Yii2中初始化一个对象

时间:2015-06-09 19:05:48

标签: php oop yii2

我在Yii2应用程序的供应商中创建了以下工具类:

String

在循环中使用//@vendor/saidbakr/tools/FoxText.php namespace FoxTools; class FoxText { public static function normalise($txt) { include(dirname(dirname(__DIR__))."/I18N/Arabic.php"); $norm2 = new \I18N_Arabic('Normalise'); return $norm2->stripTashkeel($txt); } } 或在代码的任何其他块中重用它时,我遇到以下错误:

  

PHP编译错误 - yii \ base \ ErrorException

     

无法重新声明I18N_Arabic_Normalise类   1.在C:\ xampp-2 \ htdocs \ feqh-site \ vendor \ I18N \ Arabic \ Normalise.php

我尝试使用FoxText::normalise()并定义没有include_once的方法并初始化为动态变量

static 然后$p = new FoxTools\FoxText()但它也失败了。我也试过:

$p->normalise()

它成功但在循环中没用。

我想再次提一下,**如果我使用过一次就可以正常工作**

1 个答案:

答案 0 :(得分:1)

使用namespaces代替includerequire。这是导入文件的recommended Yii2 method。假设Arabic.php名称空间中有\I18N

namespace FoxTools;
use \I18N\Arabic;
class FoxText
{
...

或者,您可以使用require_once代替include

require_once(dirname(dirname(__DIR__))."/I18N/Arabic.php");