PHP不允许

class Foo
{
    private const my_private_const;

但当然允许

const my_const;

实际上常数是全局的,因为我可以用Foo::my_const在任何地方访问my_const

有没有办法使私有常量成为私有常量?

推荐答案

答案是简单的"不".PHP不支持这个概念.你能做的最好的事情就是在类中设置一个private static变量,这当然没有那么好,因为它不是只读的.但你必须克服它.

Edit

你的问题让我思考——以下是我从未try 过的东西,但可能有用.换句话说,"这是未经测试的".但假设你想要一个名为FOO的"私有常数":

// "Constant" definitions
private function __get($constName){
    // Null for non-defined "constants"
    $val = null;

    switch($constName){
        case 'FOO':
            $val = 'MY CONSTANT UNCHANGEABLE VALUE';
            break;
        case 'BAR':
            $val = 'MY OTHER CONSTANT VALUE';
            break;
    }

    return $val;
}

当然,你的语法看起来有点奇怪:

// Retrieve the "constant"
$foo = $this->FOO;

...但至少这行不通:

$this->FOO = 'illegal!';

也许有什么值得一试的?

干杯

Php相关问答推荐

如果特定值与单独数组中的值匹配,如何从更大的数组中删除PHP数组?

使用额外的输入字段自定义WooCommerce单个产品

PHP Array to Powershell exec命令Args

显示WooCommerce当前产品类别或标签的短代码

照明\Support\Collection::Filter():参数#1($Callback)的类型必须为?可调用、已给定数组、已调用

ForHumans函数中的月当量与单位限制

在Laravel Eloquent中实现一对多关系

基于不用于变体的产品属性隐藏多个WooCommerce发货方式

如何在php网站代码中清理浏览器缓存

Codeigniter 4中的未定义变量$HOME

htaccess重命名index.php以在URL中显示为SEO的友好名称

在WooCommerce Admin产品列表自定义列中显示来自元数据的统计数据

在WooCommerce循环中添加子类别和产品之间的分隔符

如何在其他数组php中创建具有关联数组的数组

Mac 上安装 php 时出现 Homebrew 错误

如何在 Woocommerce 中自动删除旧的已完成订单

WooCommerce 回购自定义插件:如何更新用户钱包?

使用 PHP 的 OAuth 2.0 MAC

为WooCommerce中的运输方式ID设置必填的 checkout 订单备注字段

password_verify 在 PHP 7.4 中有效,但在 PHP 8.2 中无效