利用好PHP中use的as

在PHP编程中,我们会经常遇到需要调用被继承的方法的情况。

比如在处理登录逻辑时,我们可能需要验证用户提交的验证码是否合法,这时你就需要在原有的方法上添加你自己关于验证码验证相关的逻辑。

有个很蠢的方法,就是直接到原有的方法,copy原有的代码,粘贴到自己的关于验证码处理的逻辑的部分。可这种代码的耦合度……(~不忍直视~)当原有逻辑变化时,就会骂娘了。

对于继承类的情况,我们有很好用的parent::可以用,直接将手伸进继承的类中……

可是,trait的情况呢?我们看下面的例子(无关代码已删除)

<?php

namespace App\Http\Controllers\Auth;

use Origlnal;
use Http\Request;

class LoginController
{
  use Origlnal;

  /**
    * Validate the user login Captcha request.
    *
    * @param  Http\Request $request
    * @return void
    */
    protected function validateLogin(Request $request)
    {
      $this->validate($request, [
        'geetest_challenge' => 'geetest',
      ], [
        'geetest' => config('geetest.server_fail_alert')
      ]);
    }
}

在这段代码中,validateLogin 继承的是 Origlnal 中的同名方法。可此方法只负责验证码的验证。

对于trait就没有parent::了,而Origlnal::会因为未实例化而报错。

就只能高耦合了吗?NO……

我们可以这样解决:将use Origlnal修改成如下代码。

use Origlnal
{
  validateLogin as foo;
}

这样,Origlnal中的validateLogin方法就会变成foo方法,在新方法中调用foo($request);即可。

总结:

我的屁话那么多,其实就是一句话:把原来的方法用 use+as 换成另外的名字引用,即可。

若有更好的方法,还请高人指教,谢谢。

转载于:https://www.cnblogs.com/mrcn/p/use-and-as-in-php.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值