Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Reflection - Wylistowanie metod klasy
starach
post
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
 
Start new topic
Odpowiedzi (1 - 6)
orson
post
Post #2





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

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


witam

[OT]
40 metod (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.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
Go to the top of the page
+Quote Post
dr_bonzo
post
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/ ?
Go to the top of the page
+Quote Post
starach
post
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
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.
Go to the top of the page
+Quote Post
RABP
post
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
Go to the top of the page
+Quote Post
em1X
post
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? (IMG:style_emoticons/default/smile.gif)
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: 24.08.2025 - 16:58