Почему вы можете вызывать закрытый метод за пределами области видимости объекта?

Мне любопытно, почему это разрешено, когда вы можете вызывать и успешно выполнять закрытый метод для объекта из-за пределов области объекта, если вы делаете вызов из класса того же типа.

Мне кажется, что вызов частного метода из общедоступной области не удовлетворяет критериям частного метода, так почему это разрешено как в PHP, так и в Java?

<?php

class A
{

public function publicMethod ()
{
$obj = new static;
$obj->privateMethod ();
}

private function privateMethod ()
{
echo 'why does this execute?';
}

}

$obj = new A;
$obj->publicMethod ();

0

Решение

Объекты одного типа будут иметь доступ друг к другу как к закрытым, так и к защищенным элементам, даже если они не совпадают. Это связано с тем, что конкретные детали реализации уже известны внутри этих объектов.

Visiblity, Руководство по PHP

0

Другие решения

Частный модификатор Определяет, что вы вызываете свойство или метод в локальной области. Под этим я подразумеваю тот же класс.
Хотя его собственный класс является единственным вызывающим, вы можете использовать его в публичном методе и затем вызывать этот публичный метод вне локальной области (класс владельца)

0

По вопросам рекламы [email protected]