【问题标题】:How to access static properties of a class如何访问类的静态属性
【发布时间】:2026-01-09 19:00:01
【问题描述】:

我查看了堆栈溢出的答案,包括this one,但没有任何效果,我觉得它很简单!我不明白。

我的文件在/app/C/V1/RM.php:

<?php

namespace App\C\V1;

class RM{
    public static $info = [
        key => 'rm',
        name => 'RM Title Here',
        logo => '',
        status => 'alpha'
    ];
}

我正在尝试在这样的 Laravel 控制器中获取 $info

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\C\V1;

class CourierApiV1Controller extends Controller
{    
    public function listC(Request $request) {
        $info = V1\RM::info;
        return response()->json([
            'info' => $info
        ]);
    }
}

为什么这不起作用?如何获取静态属性?

【问题讨论】:

  • 你得到什么错误?
  • 使用未定义的常量键 - 假定为“键”(这将在 PHP 的未来版本中引发错误)

标签: php laravel


【解决方案1】:

您必须使用 single quotedouble quote 作为数组索引,默认情况下它们被视为 const ,这就是您收到错误的原因

class RM{
 public static $info = [
    'key' => 'rm',
    'name' => 'RM Title Here',
    'logo' => '',
    'status' => 'alpha'
 ];
}

【讨论】:

  • 是的,就是这样。谢谢
【解决方案2】:

调用静态属性需要加$

RM::$info 

【讨论】:

  • 我在尝试时收到此错误:Use of undefined constant key - assumed 'key' (this will throw an Error in a future version of PHP)
  • 但那是因为你的代码一团糟,充满了错误,而这与它无关。
  • @Amarnasan 需要详细说明吗?
  • @Amarnasan 在数组键周围缺少几个引号并不是任何定义都“充满错误的混乱”