1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<sect1 id="zend.server.reflection">
<title>Zend_Server_Reflection</title>
<sect2 id="zend.server.reflection.introduction">
<title>Wprowadzenie</title>
<para>
Klasa Zend_Server_Reflection zapewnia standardowy mechanizm dla
przeprowadzania introspekcji funkcji i klas dla potrzeb klas
serwerów. Jest oparta na API Reflection PHP5 i rozszerza je aby
zapewnić metody pobierania typów parametrów jakie przyjmuje funkcja,
typów zwracanych wartości oraz opisów, pełnej listy prototypów
funkcji i metod (np. wszystkie możliwe poprawne kombinacje
wywołania), oraz opisów funkcji/metod.
</para>
<para>
Typowo ta funkcjonalność będzie używana przez programistów klas
serwerów dla frameworka.
</para>
</sect2>
<sect2 id="zend.server.reflection.usage">
<title>Użycie</title>
<para>
Podstawowe użycie jest proste:
</para>
<programlisting role="php"><![CDATA[
$class = Zend_Server_Reflection::reflectClass('My_Class');
$function = Zend_Server_Reflection::reflectFunction('my_function');
// Pobierz prototypy
$prototypes = $reflection->getPrototypes();
// Przechodzimy pętlą przez wszystkie prototypy funkcji
foreach ($prototypes as $prototype) {
// Pobierz typ zwracanej wartości prototypu
echo "Zwracany typ: ", $prototype->getReturnType(), "\n";
// Pobierz parametry prototypu
$parameters = $prototype->getParameters();
echo "Parametry: \n";
foreach ($parameters as $parameter) {
// Pobierz typ prototypu
echo " ", $parameter->getType(), "\n";
}
}
// Pobierz przestrzeń nazw dla klasy, funkcji lub metody
// Przestrzenie nazw mogą być ustawione podczas tworzenia instancji
// lub przez użycie metody setNamespace()
$reflection->getNamespace();
]]>
</programlisting>
<para>
<code>reflectFunction()</code> zwraca obiekt
<code>Zend_Server_Reflection_Function</code>;
<code>reflectClass</code> zwraca obiekt
<code>Zend_Server_Reflection_Class</code>. Proszę sprawdź
dokumentację API aby dowiedzieć się jakie metody ma każdy z nich.
</para>
</sect2>
</sect1>
|