我在Yii2应用程序的供应商中创建了以下tools类:
//@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);
}
}当在循环中使用FoxText::normalise()或在代码的任何其他块中重用它时,我得到了以下错误:
PHP编译错误- yii\base\ErrorException 无法在C:\xampp-2\htdocs\feqh-site\vendor\I18N\Arabic\Normalise.php中重新声明I18N_Arabic_Normalise 1类
我尝试使用include_once并在没有static的情况下定义方法,并将其初始化为动态变量。
$p = new FoxTools\FoxText()然后$p->normalise(),但它也失败了。我还试图:
use FoxTools\FoxText;
use FoxTools\FoxText as text2;
use FoxTools\FoxText as text3;它成功了,但在循环中却没有用。
我想再次提到的是,如果我用一次,它会很好。
发布于 2015-06-09 20:27:55
使用namespaces而不是include或require。这是导入文件的推荐Yii2法。假设Arabic.php位于\I18N命名空间中:
namespace FoxTools;
use \I18N\Arabic;
class FoxText
{
...或者,您可以使用require_once而不是include。
require_once(dirname(dirname(__DIR__))."/I18N/Arabic.php"); https://stackoverflow.com/questions/30740699
复制相似问题