Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Czy da się z poziomu obiektu wyświetlić nazwę obiektu/klasy w którym został stworzony ten obiekt?
xamil
post 18.08.2006, 11:33:03
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Witam.

Pytanie jak w temacie plus przykładowy kod:
  1. <?php
  2. class a {
  3. function a {
  4.  $y=new b();
  5. }
  6. }
  7. class b {
  8. function b {
  9. echo 'Czy da się tu wyświetlić nazwę obiektu/klasy w którym został stworzony ten obiekt? Czyli w tym wypadku nazwę "a"';
  10. }
  11. }
  12. $x=new a();
  13. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Ludvik
post 18.08.2006, 12:23:28
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


  1. <?php
  2.  
  3. class One {
  4. public function __construct() {
  5. $temp = new Two();
  6. }
  7. }
  8.  
  9. class Two {
  10. public function __construct() {
  11. }
  12. }
  13.  
  14. $o = new One();
  15.  
  16. ?>

Zobacz wyświetloną tablicę... Nazwa klasy tam jest smile.gif


--------------------
Go to the top of the page
+Quote Post
xamil
post 18.08.2006, 12:50:59
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


No jest w args->function. Tylko, że jakoś mnie przeraża nazwa funkcji "debug_backtrace". To chyba nie jest funkcja z której powinno się korzystać wielokrotnie w kodzie. Poza tym przypuszczam, ze jest zasobożerna. Nie ma jakiejś bardziej wyspecjalizwoanej funkcji w kierunku wyciagnięcia tej informacji? Po prostu potrzebuje aby obiekt wiedział skąd został wywołany.
Go to the top of the page
+Quote Post
dr_bonzo
post 18.08.2006, 13:01:28
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Po prostu potrzebuje aby obiekt wiedział skąd został wywołany.

debug_backtrace robi to co chcesz osiagnac.
Mozesz ukryc ja pod inna nazwa, jesli cie az tak przeraza.

Poza tym w "normalnym" skrypcie nie potrzebujesz takich informacji.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
xamil
post 18.08.2006, 13:36:22
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Cytat(dr_bonzo @ 18.08.2006, 14:01 ) *
debug_backtrace robi to co chcesz osiagnac.
Mozesz ukryc ja pod inna nazwa, jesli cie az tak przeraza.
Miałem na myśli, że ta funkcja nie jest przeznaczona do tego co chcę otrzymać i po drugie, że jestem ciekaw jak bardzo jest zasobożerna? Czy jest sens ją używać w aplikacji czy lepiej obejść mój problem w inny sposób ale jej nie używając?
Cytat(dr_bonzo @ 18.08.2006, 14:01 ) *
Poza tym w "normalnym" skrypcie nie potrzebujesz takich informacji.
Piszę bardzo normalny "skrypt" w którym zależy mi na przeźroczystości działania.

Ten post edytował xamil 18.08.2006, 13:37:27
Go to the top of the page
+Quote Post
Ludvik
post 19.08.2006, 10:07:26
Post #6





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Sprawdź to xdebugiem albo innym profilerem...

Ja obstaję przy zdaniu dr_bonzo: Taka funkcjonalność nie jest potrzebna na co dzień. Nawet nazwa funkcji Ci podpowiada, że jest stworzona do debugowania. Jak tak bardzo Ci zależy jednak na tym, to przekaż obiekt, wewnątrz którego tworzysz drugi, do konstruktora. Potem tylko get_class" title="Zobacz w manualu php" target="_manual. Powinno być szybciej...


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 19.08.2006, 10:12:52
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Piszę bardzo normalny "skrypt" w którym zależy mi na przeźroczystości działania.

YYYY?? ke?? Co to znaczy "przezroczystosc dzialania"?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Denver
post 19.08.2006, 10:19:26
Post #8





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

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


Zawsze możesz klasie B podczas tworzenia jej egzemplarza przesyłać w argumencie stałą __CLASS__.


--------------------
Go to the top of the page
+Quote Post
Prph
post 21.08.2006, 12:52:36
Post #9





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Witam,

Ja mam klase Controller we frameworku z ktorej dziedzicza wszystkie inne kontrolery aplikacji.

  1. <?php
  2. abstract class Controller
  3. {
  4. //inne metody uzyteczne przy szybkim budowaniu wlasnego kontrolera
  5.  
  6. public function getConfig()
  7. {
  8. }
  9. }
  10. ?>


Kiedy robie swoj kontroler, jest on postaci:

  1. <?php
  2. class MojKontroller extends Controller
  3. {
  4. public function pokazNowosci_Action()
  5. {
  6. $oConfig = $this->getConfig();
  7. // w tej chwili $oConfig powinien zawierac konfiguracje do akcji.
  8. }
  9.  
  10. /*
  11.    getConfig powinien wczytac konfiguracje z pliku katalog_konfiguracji/MojKontroler_pokazNowosc.php
  12.    ale zeby to zrobil musi wiedziec jaka metoda odwoluje sie do getConfig()
  13.   */
  14. }
  15. ?>


Jakis pomysl?
Go to the top of the page
+Quote Post
xamil
post 21.08.2006, 13:02:08
Post #10





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


No właśnie niestety ja nie uzyskałem na to pytanie odpowiedzi a widać, że nie tylko ja uważam to za potrzebne. W tej chwili jedynym wyjściem jest sparametryzowanie getConfig()
Go to the top of the page
+Quote Post
dr_bonzo
post 21.08.2006, 13:13:20
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Prph: a nie lepiej automatyczne (frameworkiem) zalaczyc ten konfig i zapisac go w $this->config? Przeciez zeby wywolac akcje musisz znac nazwe kontrolera i akcji, a jak to znasz to utworzysz sobie sciezke do pliku.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Prph
post 21.08.2006, 14:59:20
Post #12





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


To jest jakies rozwiazanie, ale wolalbym, zeby framework nie musial wczytywac tego konfiga
Jezeli nic lepszego nie wymysle, to tak zrobie.

Edit:

To jednak problemu nie rozwiaze. Bo i tak z metody musze odwolywac sie:

  1. <?php
  2. $oConfig->mojaAkcja->opcja;
  3. ?>


I nie kombinujac, tak bede musial zrobic, poniewaz sam kontroler ma takze miec mozliwosc ustawiuania konfiguracji, tj:

  1. <?php
  2. $a = array
  3. (
  4. 'opcja1' => 'wartosc1',
  5. 'akcje' => array
  6. (
  7. 'PokazNowosc' => array
  8.  (
  9.  'opcja1' => 'wartosc1'
  10.  )
  11. )
  12. );
  13. ?>


Adrian.

Ten post edytował Prph 21.08.2006, 15:04:43
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 23.06.2025 - 20:33