【问题标题】:php constant in oops being changed by the class objectoops 中的 php 常量被类对象更改
【发布时间】:2014-08-18 11:54:05
【问题描述】:

今天我在 oops 中阅读常量,被一段代码弄糊涂了,无法弄清楚原因,代码如下:

<?php
class myClass1
{
    const ID=1;
    private $name;

    public function get_name()
    {
        return $this->name ."<br>";
    }

    public function set_name($setName)
    {
        $this->name=$setName;
    }
}

$myClass1_object = new myClass1();

$myClass1_object->ID=2;

print("<br>".$myClass1_object->ID);
?>

我想知道类对象(即 $myClass1_object->ID=2;)如何更改常量变量(即 const ID=1)的原因。在打印语句中我得到更新的值,即 2.

【问题讨论】:

  • 这个内容正在被魔法改变__set()
  • 您打印另一个字段(通过魔术方法访问它创建),而不是常量。使用以下语法访问常量:myClass1::ID
  • 还有一件事。在课堂上使用 CONST 的目的是什么?毫无意义。你有静态属性
  • @turson 有些人是防静电的,因为他们是邪恶的。不过你可以使用定义

标签: php oop


【解决方案1】:

如果您尝试访问未定义的对象属性,PHP 会为您创建它:

$obj = new stdClass();

$obj->hello = 'world';

因此,当您尝试以这种方式访问​​常量时,您只创建了另一个字段 ID。尝试在脚本末尾打印常量值:

echo myClass1::ID;

它应该仍然是 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多