2017-04-14 16:11:07 2535次浏览 2条回答 0 悬赏 20 金钱

把 vendor里面的一个扩展提到 common 文件下的extensions 下 该怎么提,这样便于修改一些功能。因为vendor里面的代码不能随便改。

补充于 2017-04-14 16:36

        

最佳答案

  • dashixiong 发布于 2017-04-14 16:14 举报

    继承vendor里面的类即可。

    6 条回复
    回复于 2017-04-14 16:37 回复

    请您再说详细一点,继承什么类?
    因为我发现一个扩展该用的类都在 use 里面引用了,那里还有什么类呢?能再详细说一下吗?

    回复于 2017-04-14 16:42 回复

    扩展里面肯定会有一个主类,比如helper中的Html类,你如果想扩展Html类 或者修改里面方法,你可以再你说的common文件夹中写这么一个相同名字的类,然后继承vendor里的Html类。然后你就可以扩展或者修改里面的方法了,但是你调用的时候要use你common文件里面的类,不要use vendor里面的类了。

    回复于 2017-04-14 17:12 回复

    这样写的话 在controllers 里面是可以用use ,但是我要在main.php里面应用这个类是不行的,要报错。

    回复于 2017-04-14 17:17 回复

    比如

    'aliases' => [

    '@sms' =>  '@common/extensions/sms',
    

    ],

        'sms' => [
            'class' => 'common/extensions/sms',
      ]
    
    回复于 2017-04-14 17:56 回复

    你说的是配置文件里的main.php吗,在那里面也是可以使用的。

    回复于 2017-04-14 18:18 回复

    明白!

  • 回答于 2017-04-14 16:38 举报

    两个步骤:
    1。将文件夹完整拷贝到common下面
    2。这一步比较关键,涉及到了yii2的类自动加载的机制,需要符合下面的规范
    每个类都必须置于命名空间之下 (比如 foo\bar\MyClass)。
    每个类都必须保存为单独文件,且其完整路径能用以下算法取得:
    // $className 是一个开头包含反斜杠的完整类名(译注:请自行谷歌:fully qualified class name)
    $classFile = Yii::getAlias('@' . str_replace('\', '/', $className) . '.php');

    3 条回复
    回复于 2017-04-14 17:15 回复

    在 main.php 里面加

    'aliases' => [
        '@sms' =>  '@common/extensions/sms',
    ],
    

    这样的话 应该和你的是一个意思吧,但是我要在main.php里面应用这个类是不行的。比如

            'sms' => [
                'class' => 'common/extensions/sms',
    		  ]
    
    回复于 2017-04-14 22:13 回复


    配置文件应该像下面这种写法
    1.打开vendor/yiisoft/extensions文件,找个你的extens的配置,
    'name' => 'yiisoft/yii2-imagine',

    'version' => '2.1.0.0',
    'alias' => 
    array (
      '@yii/imagine' => $vendorDir . '/yiisoft/yii2-imagine',
    ),
    

    2.找到这一行, '@yii/imagine' => $vendorDir . '/yiisoft/yii2-imagine'
    3.然后在你的main.php里面里面这样写
    'aliases' => [

    '@yii/imagine' =>  '@common/extensions/imagine',
    

    ]

    回复于 2017-04-14 22:15 回复

    这样的写法才是符合yii自动加载的规则的

您需要登录后才可以回答。登录 | 立即注册
liuruiaaa
见习主管

liuruiaaa

注册时间:2016-02-29
最后登录:2017-07-14
在线时长:10小时53分
  • 粉丝6
  • 金钱163
  • 威望10
  • 积分363

热门问题