沐风待雨

沐风待雨

这家伙有点懒,还没写个性签名!

  • 财富值350
  • 威望值50
  • 总积分1010

个人信息

  • 回复了 的回答

    跟php版本有关,高版本的php会提示,似乎5.5以下的没有提示

    谢谢,(^o^)/~

  • 赞了回答

    是的,可以的,但不是yii2的问题,是php4引入的时候就支持了这个事情,不过不建议,内存也没省,还容易混淆,还是不要这样用吧。

  • 赞了回答

    在C++等其它语言中看来这属于非法调用,因为它增加了代码理解难度,代码的可读性变得很差,但在PHP中,是可以的,但也是不推荐的。之所以可以这么调用,是因为PHP的过程式语言过渡到面向对象时,对处理子类继承父类并覆盖了父类的函数,同时又想在子类中使用父类的该函数时,做的一个奇怪的决定,使用 :: 符号引用父类的该函数,该符号在这里不代表静态调用,而只是单纯的想调用父类的函数的意思,并且其calling scope 还是子类的,也就是说父类函数中使用$this->的地方仍然在子类的调用空间内。同时这种使用方法当时做了合法性判断,只用于以上的继承覆盖调用父类函数的情况,但由于效率问题,后来取消了该判断,交由程序员自己规范此类代码。

    但现在来说,很多程序在非以上情况下使用这种特性,虽然php又重新用parent::方式重新定义了以上场景的使用方法,但为了向下兼容,不得已,仍然可以静态调用非静态方法,但不推荐使用,所以出现了题主遇到的警告信息。

    Strict Standards: Non-static method MyClass::showConstant() should not be called statically只是一个警告,并非至命错误,仍然是可以执行成功的,yii2里面将Strict Error这个警告去掉了,所以看不见

  • 赞了回答

    跟php版本有关,高版本的php会提示,似乎5.5以下的没有提示

  • 回复了 的评论

    感谢分享,解决了我的问题

    my pleasure ,O(∩_∩)O

  • 回复了 的回答

    是的,可以的,但不是yii2的问题,是php4引入的时候就支持了这个事情,不过不建议,内存也没省,还容易混淆,还是不要这样用吧。

    但我用原生的php就会报错。
    Strict Standards: Non-static method MyClass::showConstant() should not be called statically

  • 回复了 的评论

    'captchaAction'=>'控制器名/captcha'这个深有体会,就是因为没加这个验证码出不来,搞了好久。

    最后一个括号错了
    <?= $form->field($model, 'verifyCode')->widget(Captcha::className()) ?>

  • 回复了 的回答

    你看这个页面的html页面的代码

    <form id="w3" class="reply-form hidden" action="/question/2624" method="post">
    <input type="hidden" name="_csrf" value="VjlpSFVkQ3UeeCULBTwPEThINnEhPHNGJlUADj8RBTsfWhsQABYkJw==">        <div class="form-group field-answer-parent_id">
    <input type="hidden" id="answer-parent_id" class="parent_id" name="Answer[parent_id]">
    </div>        <div class="form-group field-answer-reply-content required">
    <textarea id="answer-reply-content" class="form-control" name="Answer[content]" aria-required="true"></textarea>
    <div class="help-block"></div>
    </div>        <div class="form-group">
                <button type="submit" class="btn btn-sm btn-primary">回复</button>        </div>
            </form>
    
    这里的action是提交到自身页面的,表单提交时你把action改成自己想提交的页面就行了, 不过在本页面的控制器上一样是可以处理的,不用非要提交到别的页面的控制器

    那就好,O(∩_∩)O哈哈~

  • 你看这个页面的html页面的代码

    <form id="w3" class="reply-form hidden" action="/question/2624" method="post">
    <input type="hidden" name="_csrf" value="VjlpSFVkQ3UeeCULBTwPEThINnEhPHNGJlUADj8RBTsfWhsQABYkJw==">        <div class="form-group field-answer-parent_id">
    <input type="hidden" id="answer-parent_id" class="parent_id" name="Answer[parent_id]">
    </div>        <div class="form-group field-answer-reply-content required">
    <textarea id="answer-reply-content" class="form-control" name="Answer[content]" aria-required="true"></textarea>
    <div class="help-block"></div>
    </div>        <div class="form-group">
                <button type="submit" class="btn btn-sm btn-primary">回复</button>        </div>
            </form>
    
    这里的action是提交到自身页面的,表单提交时你把action改成自己想提交的页面就行了, 不过在本页面的控制器上一样是可以处理的,不用非要提交到别的页面的控制器
经理 等级规则
1010/2000
资料完整度
30/100
用户活跃度
0/100

Ta的关注

2

Ta的粉丝

8

Ta的访客

24