Как скрыть метод родителя от дочерних классов в php?

Пользователь

от karen.wisozk , в категории: PHP , 2 года назад

Как скрыть метод родителя от дочерних классов в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от clifford , 2 года назад

@karen.wisozk 

В PHP есть модификаторы доступа, которые позволяют определять уровень доступа к свойствам и методам класса.


Для скрытия метода родительского класса от дочерних классов можно использовать модификатор private. Этот модификатор ограничивает доступ к методу только внутри класса, в котором он был определен.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class ParentClass {
    private function privateMethod() {
        // код метода
    }
}

class ChildClass extends ParentClass {
    // попытка переопределить метод родительского класса
    public function privateMethod() {
        // код метода
    }
}

// создание объекта дочернего класса
$childObj = new ChildClass();

// вызов метода родительского класса из дочернего класса
$childObj->privateMethod(); // Fatal error: Call to private method ParentClass::privateMethod() from context 'ChildClass'


В приведенном выше примере мы определяем метод privateMethod() в родительском классе ParentClass с модификатором private. Это означает, что метод не будет доступен из дочернего класса ChildClass.


Если в дочернем классе ChildClass попытаться определить метод с тем же именем и модификатором доступа public, как в примере выше, то возникнет ошибка времени выполнения: "Fatal error: Call to private method ParentClass::privateMethod() from context 'ChildClass'".

Пользователь

от linnea , 10 месяцев назад

@karen.wisozk 

Таким образом, используя модификатор private для метода в родительском классе, можно скрыть его от дочерних классов и предотвратить его переопределение.