【问题标题】:unexpected '->' (T_OBJECT_OPERATOR) laravel意外的\'->\'(T_OBJECT_OPERATOR)laravel
【发布时间】:2023-02-06 15:47:12
【问题描述】:

我刚刚创建了一个新的 laravel 项目并设置了 linting 自动化,但是返回语句中弹出了一个 lint 错误。

protected function configureRateLimiting()
{
    RateLimiter::for('api', function (Request $request) {
        return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
    });
}

为什么会弹出 lint 错误?

【问题讨论】:

  • $request->user()?->id 为什么你认为这是有效的 PHP?
  • @LarsStegelitz 因为从 PHP 8 开始,it is
  • 请检查您的 PHP 版本。您正在使用的 nullsafe 运算符是在 PHP 8 中引入的。PHP 7 不支持它。
  • 如果您使用的是 PHP 8 而这只是一个 lint 错误,您的 linter 可能思考您使用的是 PHP 7,因此需要检查其设置。

标签: php laravel


【解决方案1】:

检查您的 PHP 和 Laravel 版本。 Laravel 9 需要 PHP8。 https://laravel.com/docs/9.x/releases

PHP 8 支持 nullsafe 运算符 https://kinsta.com/blog/php-8/#nullsafe-operator

【讨论】:

    【解决方案2】:

    问题出在您的代码中。使用以下代码:

        protected function configureRateLimiting(){
    
        RateLimiter::for('api', function (Request $request) {
            return Limit::perMinute(60)->by($request->user()->id ?: $request->ip());
        });
    }
    

    【讨论】:

      【解决方案3】:

      这是我解决你的问题。重写三元运算符如下

         protected function configureRateLimiting(){
      
           RateLimiter::for('api', function (Request $request) {
           return Limit::perMinute(60)->by($request->user() ? $request->user()->id 
             : $request->ip());
         });
      }
      

      【讨论】:

        【解决方案4】:

        我改变了这个并解决了问题

        protected function configureRateLimiting()
        {
            RateLimiter::for('api', function (Request $request) {
                return Limit::perMinute(60)->by($request->user()->id ?? $request->ip());
            });
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-08
          • 2013-12-28
          • 2011-02-24
          • 2011-07-15
          • 1970-01-01
          • 1970-01-01
          • 2012-11-03
          • 1970-01-01
          相关资源
          最近更新 更多