首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用包含一次并在Yii2中初始化对象的静态方法

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

Stack Overflow用户
提问于 2015-06-09 19:05:48
回答 1查看 461关注 0票数 0

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

代码语言:javascript
复制
//@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(),但它也失败了。我还试图:

代码语言:javascript
复制
use FoxTools\FoxText;
use FoxTools\FoxText as text2;
use FoxTools\FoxText as text3;

它成功了,但在循环中却没有用。

我想再次提到的是,如果我用一次,它会很好。

EN

回答 1

Stack Overflow用户

发布于 2015-06-09 20:27:55

使用namespaces而不是includerequire。这是导入文件的推荐Yii2法。假设Arabic.php位于\I18N命名空间中:

代码语言:javascript
复制
namespace FoxTools;
use \I18N\Arabic;
class FoxText
{
...

或者,您可以使用require_once而不是include

代码语言:javascript
复制
require_once(dirname(dirname(__DIR__))."/I18N/Arabic.php"); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30740699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档