Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Reflection - Wylistowanie metod klasy
starach
post 19.02.2007, 20:03:22
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Witam.
Napisałem całkiem obszerną klasę i chciałbym teraz zrobić do niej dokumentacje jako że zawiera ona ponad 40 metod to chciałbym uniknąć kopiowania ich. Nie używałem klasy reflection jeszcze a dobrej dokumentacji znaleźć do tego nie mogę. Przyznam że nie chce mi się też dochodzić do tego jak się jej używa metodą prób i błędów. Czy miałby ktoś gotowy skrypt który wylistowałby mi wszystkie metody klasowe ( zmienne też by mogły być )
Pozdrawiam.
Go to the top of the page
+Quote Post
orson
post 19.02.2007, 20:36:24
Post #2





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam

[OT]
40 metod questionmark.gifquestionmark.gifquestionmark.gif nie za dużo
[/OT]

dokumentacja na stronie php http://pl.php.net/manual/en/language.oop5.reflection.php jest bardzo dobra ... nie wiem gdzie szukałeś ...
co do problemu:

  1. <?php
  2. $foo = new ReflectionClass(<nazwa_klasy>);
  3. $ar = $foo->getMethods(); // zwraca array obiektów ReflectionMethod
  4. for($i = 0; $i < count($ar); $i++){
  5. print $foo[$i]; // wywoła metodę __toString i zwróci nazwę metody
  6. }
  7. ?>


pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
dr_bonzo
post 19.02.2007, 21:23:23
Post #3





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

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


A http://www.phpdoc.org/ ?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
starach
post 19.02.2007, 21:30:55
Post #4





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Nie działa:
Fatal error: Cannot use object of type ReflectionClass as array in D:\WWW\orglee\index.php on line 19
Tępo skopiowałem i nie zwróciłem uwagi na błąd.

edit>
Nie można samych metod bez tych 'dodatkowych' informacji, czy trzeba się bawić eregi() ?

edit>>
[SOLVED]
  1. <?php
  2. $foo = new ReflectionClass('Table');
  3. $ar = $foo->getMethods(); // zwraca array obiektów ReflectionMethod
  4.  
  5. for($i = 0; $i < count($ar); $i++){
  6. $array[] = $ar[$i]->name;
  7. }
  8. ?>


Ten post edytował orglee 20.02.2007, 00:09:22
Go to the top of the page
+Quote Post
mysz
post 20.02.2007, 10:47:15
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 26.08.2006
Skąd: Szczecin

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


Cytat(orglee @ 19.02.2007, 21:30:55 ) *
[...]trzeba się bawić eregi() ?



Zdecydowanie, nie tykać eregi.


--------------------
urzenia.net
Go to the top of the page
+Quote Post
RABP
post 13.08.2012, 08:44:53
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.08.2012

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


Cytat(mysz @ 20.02.2007, 11:47:15 ) *
Zdecydowanie, nie tykać eregi.


A w jaki sposób dynamicznie załadować do tablicy pobrane parametry wymagane przez konstruktor klasy?

Oto przykład:

Kod
$objReflection = new ReflectionClass("nazwaKlasy");//Dynamicznie podaję nazwę dołączanej klasy
$parametry = $objReflection->getConstructor()->getParameters();//Pobieram parametry wymagane przez konstruktor klasy
$tablicaParametrow = array();//Inicjuję tablicę dla parametrów

foreach($parametry as $parametr)
{
     array_push($tablicaParametrow, $parametr);//Ładuję do tablicy pobrane parametry
}

$obiektKlasy = $objReflection->newInstanceArgs($tablicaParametrow);//Tworzę instancję klasy z pobranymi parametrami


Jak chcę wylistować pobrane parametry, to podaje mi nazwę parametru np: Parameter #0 [ $jezyk ], ale bez oznaczenia, że wymagany w konstruktorze parametr, to np: $_GET['jezyk'].
Natomiast, jak do tablicy wstawię na sztywno oczekiwane parametry, to bez żadnego problemu powstaje nowy obiekt klasy.

Oto przykład:

Kod
$objReflection = new ReflectionClass("nazwaKlasy");//Dynamicznie podaję nazwę dołączanej klasy
$tablicaParametrow = array($_GET['jezyk']);//Parametry wpisane na sztywno
$obiektKlasy = $objReflection->newInstanceArgs($tablicaParametrow);//Tworzę instancję klasy z pobranymi parametrami


Macie może jakieś pomysły?

Ten post edytował RABP 13.08.2012, 10:05:06


--------------------
Strony www i szablony Allegro / Białystok
Jeżeli uważasz, że Tobie pomogłem, kliknij: POMÓGŁ. Z góry dziękuję!
Go to the top of the page
+Quote Post
em1X
post 17.09.2012, 16:49:18
Post #7





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Czemu nie skorzystasz z phpDoca? smile.gif


--------------------
eh, co polska wódka to polska wódka
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: 24.07.2025 - 20:40