【问题标题】:Yii, importing library does not workYii,导入库不起作用
【发布时间】:2014-10-12 00:15:50
【问题描述】:

我正在尝试在我的网站上实现 Identicon 库,但我收到找不到类的错误。

我尝试使用Yii::import('application.vendor.*');,所以我将库放在供应商文件夹中,但它不起作用。

我也尝试将库添加到组件控制器,但仍然给我错误。

我尝试在代码所在的视图中进行导入

<?php
    Yii::import('application.vendor.*');
    $identicon = new Identicon;

    $identicon->displayImage('test');
?>

但它告诉我找不到此类的错误。我只是将 src 文件夹从 zip 复制到供应商和组件。如何导入这个库?

【问题讨论】:

    标签: php yii identicon


    【解决方案1】:

    如果你的文件夹结构是这样的

    -- root
    -- protected
          |---- vendors
                |---- myfolder
                         |---- MyClass.php
    

    你可以这样导入

     Yii::import('appplication.vendors.myfolder.MyClass');
    

    由于 yiis 自动加载是基于文件名的,如果类 Identicon 是在 MyClass 中定义的,它不会被加载,因为它有不同的文件名,所以在这种情况下你必须使用:

     Yii::import('appplication.vendors.myfolder.*' , true);
    

    【讨论】:

    • 对不起,但我尝试了两种方法,在尝试Yii::import('application.vendor.Identicon.Identicon'); 时出现“找不到类”错误。至少它不再给我“无法打开”,我不确定这是否与库设置有关。生病检查更多关于这个
    • 你有某种缓存机制吗? apc 安装了吗?
    • 我有它作为供应商,我认为我没有任何兑现机制
    【解决方案2】:

    我最终通过编辑库中的每个文件并将其存储到 components/Identicon 中来导入 Identicon 库。

    似乎每个文件在代码中使用的命名空间不允许 Yii 导入,因此它通过删除每个文件上的命名空间和 use 命令来工作,然后将其导入配置文件中。

    'import'=>array(
            'application.models.*',
            'application.components.*',
            'application.components.Identicon.*'
    ),
    

    注意:在生成器中找到的所有文件必须与 Identicon.php 位于同一文件夹中。

    这样您就可以像 Identicon 中的自述文件所说的那样使用该库

    $Identicon = new Identicon;
    
    $identicon->displayImage('foo'); //Displays the image.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多