PHP 范围和类实例交互

标签 php scope visibility

似乎一个类的不同实例可以知道彼此的私有(private)成员变量。

我提供了一些代码来尝试展示我的问题,我将尝试对其进行解释。

我们有一个带有私有(private)成员变量的类,$hiddenmodifyPrivateMember$hidden 的值设置为 3accessPrivateMember 将一个Object 作为参数并访问它的private $hidden 成员 以返回它的值。

示例代码:

<?php
// example.php

class Object {
    private $hidden;

    public function modifyPrivateMember() {
        $this->hidden = 3;
    }

    public function accessPrivateMember(Object $otherObject) {
        return $otherObject->hidden;
    }
}

$firstObject = new Object;
$firstObject->modifyPrivateMember();


$otherObject = new Object;
echo $otherObject->accessPrivateMember($firstObject);

以上代码的输出:

$ php example.php
3

谁能解释为什么同一类的其他实例可以访问对象的私有(private)成员?这种表面上违反范围的行为是否有正当理由?

最佳答案

private 意味着它仅限于那个类,而不仅仅是那个对象。

关于PHP 范围和类实例交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296224/

相关文章:

java - 从继承的 protected Java 字段创建公共(public)访问器

php - 对象到字符串,PHP 中的唯一键

php - 如何知道用户是否还在网站上在线或离线

Django 模板标签范围迫使我做额外的查询

闭包函数内部 'this' 范围的 Javascript 混淆

jquery - 使用 JQuery 控制可见性

php - Where-ing 在歧视表中

php - MySQL 中的 VarChar ZeroFill

sql - 根据另一个表中的条件选择一个表中的记录

javascript - 隐藏 div 中的 iframe - iframe 内容不可见