<?xml version="1.0" encoding="windows-1251"?>
<rss version="0.92">
<channel>
<title>WikiJuanan - ReflectionClass</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass</link>
<description>History/revisions of WikiJuanan/ReflectionClass</description>
<language>en-us</language>
<item>
<title>2007-10-17 21:02:50</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass/show&amp;time=2007-10-17+21%3A02%3A50</link>
<description>&lt;a name="p2528-1">&lt;/a>&lt;p class="auto" id="p2528-1">&lt;a name="phpavanzado" href="http://wiki.us.es/juanan/wakka.php?wakka=PhpAvanzado" class="">Php&amp;nbsp;Avanzado&lt;/a>&lt;/p>&lt;br />&lt;a name="p2528-2">&lt;/a>&lt;p class="auto" id="p2528-2">
&lt;a name="reflectionclass" href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a>&lt;/p>&lt;br />&lt;a name="p2528-3">&lt;/a>&lt;p class="auto" id="p2528-3">
La&amp;nbsp;clase &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a> te&amp;nbsp;permite hacer ingeniería inversa de&amp;nbsp;clases.&lt;/p>&lt;br />&lt;a name="p2528-4">&lt;/a>&lt;p class="auto" id="p2528-4">
&amp;lt;?php&lt;br />
class &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a> implements Reflector&lt;br />
{&lt;/p>&lt;div class="indent">&lt;div class="indent">final private __clone()&lt;br />
public object __construct(string name)&lt;br />
public string __toString()&lt;br />
public static string export()&lt;br />
public string getName()&lt;br />
public bool isInternal()&lt;br />
public bool isUserDefined()&lt;br />
public bool isInstantiable()&lt;br />
public bool hasConstant(string name)&lt;br />
public bool hasProperty(string name)&lt;br />
public bool hasMethod(string name)&lt;br />
public string getFileName()&lt;br />
public int&amp;nbsp;getStartLine()&lt;br />
public int&amp;nbsp;getEndLine()&lt;br />
public string getDocComment()&lt;br />
public &lt;span class="missingpage">Reflection&amp;nbsp;Method&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionMethod/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a> getConstructor()&lt;br />
public &lt;span class="missingpage">Reflection&amp;nbsp;Method&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionMethod/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a> getMethod(string name)&lt;br />
public &lt;span class="missingpage">Reflection&amp;nbsp;Method&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionMethod/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a>[] getMethods()&lt;br />
public &lt;span class="missingpage">Reflection&amp;nbsp;Property&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionProperty/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a> getProperty(string name)&lt;br />
public &lt;span class="missingpage">Reflection&amp;nbsp;Property&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionProperty/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a>[] getProperties()&lt;br />
public array getConstants()&lt;br />
public mixed getConstant(string name)&lt;br />
public &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a>[] getInterfaces()&lt;br />
public bool isInterface()&lt;br />
public bool isAbstract()&lt;br />
public bool isFinal()&lt;br />
public int&amp;nbsp;getModifiers()&lt;br />
public bool isInstance(stdclass object)&lt;br />
public stdclass newInstance(mixed* args)&lt;br />
public &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a> getParentClass()&lt;br />
public bool isSubclassOf(&lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a> class)&lt;br />
public array getStaticProperties()&lt;br />
public array getDefaultProperties()&lt;br />
public bool isIterateable()&lt;br />
public bool implementsInterface(string name)&lt;br />
public &lt;span class="missingpage">Reflection&amp;nbsp;Extension&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionExtension/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a> getExtension()&lt;br />
public string getExtensionName()&lt;/div>&lt;/div>&lt;a name="p2528-5">&lt;/a>&lt;p class="auto" id="p2528-5">
}&lt;br />
?&amp;gt;&lt;/p>&lt;br />
&lt;div class="indent">&lt;div class="indent">Nota: hasConstant(), hasMethod(), hasProperty() fueron agregados en&amp;nbsp;PHP 5.1.0. &lt;/div>&lt;/div>
&lt;br />&lt;a name="p2528-6">&lt;/a>&lt;p class="auto" id="p2528-6">
Para entender una&amp;nbsp;clase, primero tendrá que&amp;nbsp;crear una&amp;nbsp;instancia de&amp;nbsp;la clase &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a>. Entonces puede llamar cualquiera de&amp;nbsp;los métodos anteriores en&amp;nbsp;esta instancia.&lt;/p>&lt;br />&lt;a name="p2528-7">&lt;/a>&lt;p class="auto" id="p2528-7">
Ejemplo &lt;span class="nobr">19&amp;ndash;35&lt;/span>. Usando la&amp;nbsp;clase &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a>&lt;br />
&amp;lt;?php&lt;br />
interface Serializable&lt;br />
{&lt;/p>&lt;div class="indent">&lt;div class="indent">// ...&lt;/div>&lt;/div>&lt;a name="p2528-8">&lt;/a>&lt;p class="auto" id="p2528-8">
}&lt;/p>&lt;br />&lt;a name="p2528-9">&lt;/a>&lt;p class="auto" id="p2528-9">
class Object&lt;br />
{&lt;/p>&lt;div class="indent">&lt;div class="indent">// ...&lt;/div>&lt;/div>&lt;a name="p2528-10">&lt;/a>&lt;p class="auto" id="p2528-10">
}&lt;/p>&lt;br />&lt;a name="p2528-11">&lt;/a>&lt;p class="auto" id="p2528-11">
/**&lt;br />
 * A&amp;nbsp;counter class&lt;br />
 */&lt;br />
class Counter extends Object implements Serializable&lt;br />
{&lt;/p>&lt;div class="indent">&lt;div class="indent">const START = 0;&lt;br />
private static $c = Counter::START;&lt;/div>&lt;a name="p2528-12">&lt;/a>&lt;p class="auto" id="p2528-12">&lt;/div>
&lt;br />
&lt;div class="indent">&lt;/p>&lt;div class="indent">/**&lt;br />
 * Invoke counter&lt;br />
 *&lt;br />
 * @access  public&lt;br />
 * @return  int&lt;br />
 */&lt;br />
public function count() {&lt;div class="indent">&lt;div class="indent">return self::$c++;&lt;br />
&lt;/div>&lt;/div>}&lt;/div>&lt;/div>&lt;a name="p2528-13">&lt;/a>&lt;p class="auto" id="p2528-13">
}&lt;/p>&lt;br />&lt;a name="p2528-14">&lt;/a>&lt;p class="auto" id="p2528-14">
// Create an&amp;nbsp;instance of&amp;nbsp;the &lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a> class&lt;br />
$class = new&amp;nbsp;&lt;a  href="http://wiki.us.es/juanan/wakka.php?wakka=ReflectionClass" class="">Reflection&amp;nbsp;Class&lt;/a>('Counter');&lt;/p>&lt;br />&lt;a name="p2528-15">&lt;/a>&lt;p class="auto" id="p2528-15">
// Print out&amp;nbsp;basic information&lt;br />
printf(&lt;/p>&lt;div class="indent">&lt;div class="indent">"===&amp;gt; The&amp;nbsp;%s%s%s %s '%s' [extends %s]\n" .&lt;br />
"     declared in&amp;nbsp;%s\n" .&lt;br />
"     lines %d to&amp;nbsp;%d\n" .&lt;br />
"     having the&amp;nbsp;modifiers %d [%s]\n",&lt;div class="indent">&lt;div class="indent">$class-&amp;gt;isInternal() ? 'internal' : '&lt;span class="nobr">user-defined&lt;/span>',&lt;br />
$class-&amp;gt;isAbstract() ? ' abstract' : &lt;span class="cite">,&lt;br />
$class-&amp;gt;isFinal() ? ' final' : &lt;/span>,&lt;br />
$class-&amp;gt;isInterface() ? 'interface' : 'class',&lt;br />
$class-&amp;gt;getName(),&lt;br />
var_export($class-&amp;gt;getParentClass(), 1),&lt;br />
$class-&amp;gt;getFileName(),&lt;br />
$class-&amp;gt;getStartLine(),&lt;br />
$class-&amp;gt;getEndline(),&lt;br />
$class-&amp;gt;getModifiers(),&lt;br />
implode(' ', Reflection::getModifierNames($class-&amp;gt;getModifiers()))&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;a name="p2528-16">&lt;/a>&lt;p class="auto" id="p2528-16">
);&lt;/p>&lt;br />&lt;a name="p2528-17">&lt;/a>&lt;p class="auto" id="p2528-17">
// Print documentation comment&lt;br />
printf("&lt;br />
&amp;gt; Documentation:\n %s\n", var_export($class-&amp;gt;getDocComment(), 1));&lt;/p>&lt;br />&lt;a name="p2528-18">&lt;/a>&lt;p class="auto" id="p2528-18">
// Print which interfaces are&amp;nbsp;implemented by&amp;nbsp;this class&lt;br />
printf("&lt;br />
&amp;gt; Implements:\n %s\n", var_export($class-&amp;gt;getInterfaces(), 1));&lt;/p>&lt;br />&lt;a name="p2528-19">&lt;/a>&lt;p class="auto" id="p2528-19">
// Print class constants&lt;br />
printf("&lt;br />
&amp;gt; Constants: %s\n", var_export($class-&amp;gt;getConstants(), 1));&lt;/p>&lt;br />&lt;a name="p2528-20">&lt;/a>&lt;p class="auto" id="p2528-20">
// Print class properties&lt;br />
printf("&lt;br />
&amp;gt; Properties: %s\n", var_export($class-&amp;gt;getProperties(), 1));&lt;/p>&lt;br />&lt;a name="p2528-21">&lt;/a>&lt;p class="auto" id="p2528-21">
// Print class methods&lt;br />
printf("&lt;br />
&amp;gt; Methods: %s\n", var_export($class-&amp;gt;getMethods(), 1));&lt;/p>&lt;br />&lt;a name="p2528-22">&lt;/a>&lt;p class="auto" id="p2528-22">
// If&amp;nbsp;this class is&amp;nbsp;instantiable, create an&amp;nbsp;instance&lt;br />
if&amp;nbsp;($class-&amp;gt;isInstantiable()) {&lt;/p>&lt;div class="indent">&lt;div class="indent">$counter = $class-&amp;gt;newInstance();&lt;/div>&lt;a name="p2528-23">&lt;/a>&lt;p class="auto" id="p2528-23">&lt;/div>
&lt;br />
&lt;div class="indent">&lt;/p>&lt;div class="indent">echo '&lt;br />
&amp;gt; $counter is&amp;nbsp;instance? ';&lt;br />
echo $class-&amp;gt;isInstance($counter) ? 'yes' : 'no';&lt;/div>&lt;a name="p2528-24">&lt;/a>&lt;p class="auto" id="p2528-24">&lt;/div>
&lt;br />
&lt;div class="indent">&lt;/p>&lt;div class="indent">echo "\n&lt;br />
&amp;gt; new&amp;nbsp;Object() is&amp;nbsp;instance? ";&lt;br />
echo $class-&amp;gt;isInstance(new Object()) ? 'yes' : 'no';&lt;/div>&lt;/div>&lt;a name="p2528-25">&lt;/a>&lt;p class="auto" id="p2528-25">
}&lt;br />
?&amp;gt;&lt;/p></description>
</item>
</channel>
</rss>

 <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
 </script>
 <script type="text/javascript">
  _uacct = "UA-1947893-2";
  urchinTracker();
 </script>

