【问题标题】:Downgrade to PHP 5.3降级到 PHP 5.3
【发布时间】:2020-09-20 12:19:52
【问题描述】:

我有一行代码需要在 PHP 5.3.3 中工作。 我无法升级 PHP 版本。

错误出现在下面最后一行的 ::class 属性中

(意外的 T_CLASS,需要 T_STRING 或 T_VARIABLE 或 '$')。

上下文是:

abstract class E
{

    public static function validate($value)
    {
        $reflector = new ReflectionClass(static::class);

有没有办法让它在 PHP 5.3.3 中工作?

【问题讨论】:

  • "我无法升级 PHP 版本。"你应该尝试解决这个问题而不是这个问题。
  • 5.3.3 可能没有抽象类,尝试将其更改为 class E

标签: php php-5.3


【解决方案1】:

::class 类的常量已在 PHP 5.5 中引入。在 PHP static::class 的等价物将是 get_called_class(),因此代码中的错误行应如下所示:

    $reflector = new ReflectionClass(get_called_class());

【讨论】:

  • 因此,与此相关的代码给出了意外的 T_OBJECT_OPERATOR 错误。有类似的修复吗? $request['order'] = $this->maybeSetKey($request['order'], 'date_time_created', (new \DateTime($builder->getOrderCreateDate()))->format(\DateTime::RFC3339_EXTENDED) );
  • 那行是同一种方法吗?静态方法中没有$this。您必须将maybeSetKey 设为静态并使用self::maybeSetKey() 调用它。
  • 不,不同的方法。我第一次看到这个代码(不是我的)。
  • 那我不知道。有一篇关于 SO 的优秀帖子有助于解决解析错误:stackoverflow.com/questions/18050071/…。由于我帮助您解决了最初的问题,请将我的回答标记为已接受。
  • 我正在尝试,但由于我是新手,它说它记录了它但没有显示它(?)
猜你喜欢
  • 2018-04-03
  • 2014-10-13
  • 2013-02-28
  • 2012-07-27
  • 1970-01-01
  • 2021-03-04
  • 2012-07-23
  • 2015-05-20
相关资源
最近更新 更多