Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jaki obiekt wywołał metodę innego obiektu
deirathe
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


Czy można w jakikolwiek sposób sprawdzić w jakim obiekcie została wykonana dana metoda?
Np powiedzmy mamy dane jak poniżej:
  1. <?php
  2. class Test
  3. {
  4.      public function metoda()
  5.      {
  6.           echo "zostalam wywolana w obiekcie ";
  7.      }
  8. }
  9. class Wywolujacy
  10. {
  11.     public function wywolaj(Test $obj)
  12.     {
  13.           $obj->metoda();
  14.      }
  15. }
  16. $wywolywacz = new Wywolujacy();
  17. $test = new Test();
  18. $wywolywacz->wywolaj($test);
  19. ?>

No i chcialbym uzyskac odpowiedz: zostalam wywolana w Wywolujacy
Wydaje mi się że nie ale jeżeli ktoś wie czy można to zrobić i jak to prosiłbym o wsparcie.

Ten post edytował deirathe 23.06.2009, 14:55:19
Go to the top of the page
+Quote Post
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




W klasie dodajesz właściwość, np. private $classname = 'Test';

A potem:
  1. <?php
  2. public function metoda()
  3.     {
  4.          echo "zostalam wywolana w obiekcie klasy " . $this->classname;
  5.     }
  6. ?>

Ale nie wiem, czy o takie rozwiązanie Ci chodzi, czy bardziej "zautomatyzowane"
Go to the top of the page
+Quote Post
230005
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


  1. <?php
  2. class Test
  3. {
  4.      public function metoda($string)
  5.      {
  6.           echo "zostalam wywolana w obiekcie ".$string;
  7.      }
  8. }
  9. class Wywolujacy
  10. {
  11.     public function wywolaj(Test $obj)
  12.     {
  13.           $obj->metoda(__class__);
  14.      }
  15. }
  16. $wywolywacz = new Wywolujacy();
  17. $test = new Test();
  18. $wywolywacz->wywolaj($test);
  19. ?>


O to chodzi?

Ten post edytował 230005 23.06.2009, 15:01:37
Go to the top of the page
+Quote Post
deirathe
post
Post #4





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


Coś takiego istnieje http://pl2.php.net/manual/en/function.get-called-class.php

Ale niestety od 5.3 a póki co :/ potrzebuje wiedzieć jaki obiekt wykonał bez przekazywania żadnych informacji po prostu mam klasę ze statyczną metodą i inny obiekt wykonuję tę metodę i już wiem jak on się nazywa

Ten post edytował deirathe 23.06.2009, 15:04:08
Go to the top of the page
+Quote Post
230005
post
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Hmmm to o co ci chodzi to jest refleksja (funkcjonuje ten mechanizm np. w javie) i php raczej nie posiada takich mechanizmów - prócz tej funkcji (i może kilku innych, nie wiem, nie znam się (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ), która jest dostępna od 5.3. Sądzę zatem, że póki co nie da się osiągnąć tego co byś chciał.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 17:18