Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Reflection - Wylistowanie metod klasy
Forum PHP.pl > Forum > PHP > Object-oriented programming
starach
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.
orson
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
dr_bonzo
A http://www.phpdoc.org/ ?
starach
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. ?>
mysz
Cytat(orglee @ 19.02.2007, 21:30:55 ) *
[...]trzeba się bawić eregi() ?



Zdecydowanie, nie tykać eregi.
RABP
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?
em1X
Czemu nie skorzystasz z phpDoca? smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.