Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jaka klasa wywołuje daną metodę?
bmL
post
Post #1





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Ciężko mi było zatytułować temat w kilku słowach. Tak więc: Czy da się sprawdzić wewnątrz tworzonego obiektu jaki obiekt go wywołał i czy w ogóle jest wywoływany z wnętrza jakiegoś obiektu (dokładniej to chcę sprawdzić czy obiekt przez który jest wywołany dziedziczy po danej klasie). Mam takie rozwiązanie:
  1. abstract class A {
  2.  
  3. }
  4.  
  5. class B extends A{
  6. __construct(){
  7. $c = c::getInstance($this); // OK
  8. }
  9. }
  10.  
  11. class C {
  12. public static function getInstance($caller)
  13. {
  14. if(!is_object($caller) || get_parent_name($caller) != A)
  15. die('ERROR');
  16.  
  17. if (!isset(self::$instance))
  18. {
  19. $c = __CLASS__;
  20. self::$instance = new $c;
  21. }
  22. return self::$instance;
  23. }
  24. }
  25.  
  26. class D {
  27. __construct()
  28. {
  29. $b = new B;
  30. $c = c::getInstance($b); // nie chcę żeby to działało ale zadziała
  31. }
  32. }

Gdyby nie obejście użyte w klasie D to wszystko by było ok ale takie coś pozwala obejść zabezpieczenie. Czy da się w jakiś sposób sprawdzić skąd została wywołana dana metoda?


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:13