Sobes.tech
Junior — Middle

Kā ārējais kods var izsaukt klases privātās metodes?

sobes.tech AI

Atbilde no AI

PHP, klases privātās metodes nav tieši pieejamas ārējā kodā, bet ir vairākas veidi, kā tās izsaukt:

  1. Reflection API izmantošana — ļauj piekļūt privātajām metodēm un tās izsaukt:
class MyClass {
    private function secret() {
        return "Noslēpumainā metode";
    }
}

$obj = new MyClass();

$reflection = new ReflectionClass($obj);
$method = $reflection->getMethod('secret');
$method->setAccessible(true); // Padara metodi pieejamu

echo $method->invoke($obj); // Izvadīs: Noslēpumainā metode
  1. Izsaukšana caur publisku metodi klases iekšpusē — ja ir publiska metode, kas izsauc privāto.

  2. Mantošana un pārrakstīšana (ierobežota) — bet privātās metodes netiek tieši mantošanas.

Visbiežāk Reflection tiek izmantota testēšanai vai ierobežojumu apietšanai.