我在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()
它成功但在循环中没用。
我想再次提一下,**如果我使用过一次就可以正常工作**
答案 0 :(得分:1)
使用namespaces
代替include
或require
。这是导入文件的recommended Yii2 method。假设Arabic.php
名称空间中有\I18N
:
namespace FoxTools;
use \I18N\Arabic;
class FoxText
{
...
或者,您可以使用require_once
代替include
:
require_once(dirname(dirname(__DIR__))."/I18N/Arabic.php");