Sobes.tech
Junior — Middle

Kuidas saab väliskood kutsuda klassi privaatsed meetodid?

sobes.tech AI

Vastus AI-lt

PHP-s ei ole klassi privaatseid meetodeid otseselt välise koodi poolt kättesaadavad, kuid on mitu viisi nende kutsumiseks:

  1. Reflection API kasutamine — võimaldab pääseda ligi privaatsetele meetoditele ja neid kutsuda:
class MyClass {
    private function secret() {
        return "Salajane meetod";
    }
}

$obj = new MyClass();

$reflection = new ReflectionClass($obj);
$method = $reflection->getMethod('secret');
$method->setAccessible(true); // Teeb meetodi kättesaadavaks

echo $method->invoke($obj); // Näitab: Salajane meetod
  1. Kutsumine läbi avaliku meetodi klassi sees — kui on olemas avalik meetod, mis kutsub privaatset.

  2. Pärimine ja ülekirjutamine (piiratud) — kuid privaatseid meetodeid ei pärida otseselt.

Enamasti kasutatakse Reflectioni testimiseks või piirangute ületamiseks.