cynic Fri Jan 26 06:37:35 2001 EDT
Added files:
/phpdoc/cs/functions classobj.xml
Log:
hope(fully) \1 translated
Index: phpdoc/cs/functions/classobj.xml
+++ phpdoc/cs/functions/classobj.xml
<reference id="ref.classobj">
<title>Funkce pro pr�ci s t��dami/objekty</title>
<titleabbrev>T��dy/Objekty</titleabbrev>
<partintro>
<sect1 id="classobj.partintro">
<title>�vod</title>
<sect2 id="classobj.intro">
<title>About</title>
<para>
Tyto funkce v�m umo��uj� z�sk�vat informace o t��d�ch a instanc�ch. M��ete
zjistit n�zev t��dy do kter� objekt pat�� nebo jeho prom�nn� a metody.
Pomoc� t�chto funkc� m��ete zjistit nejen p��slu�nost objektu k t��d�,
ale i jeho p�edka (tj. kterou t��du t��da tohoto objektu roz�i�uje).
</para>
</sect2>
<sect2 id="classobj.example">
<title>Uk�zka pou�it�</title>
<para>
V t�to uk�zce nejd��ve definujeme z�kladn� t��du a roz���en� t�to t��dy.
Z�kladn� t��da popisuje obecnou zeleninu, a� u� je jedl� nebo ne a bez
ohledu na jej� barvu. Podt��da <varname>Spenat</varname> p�id�v� metodu
na uva�en� t�to zeleniny a dal��, kter� zjist�, jestli je va�en�.
</para>
<para>
<example>
<title>classes.inc</title>
<programlisting role="php">
<?php
// z�kladn� t��da s �lensk�mi prom�nn�mi a metodami
class Zelenina {
var $jedla;
var $barva;
function Zelenina( $jedla, $barva="green" ) {
$this->jedla = $jedla;
$this->barva = $barva;
}
function je_jedla() {
return $this->jedla;
}
function jaka_barva() {
return $this->barva;
}
} // konec tridy zelenina
// rozsiruje zakladni tridu
class Spenat extends Zelenina {
var $varena = false;
function Spenat() {
$this->Zelenina( true, "zelena" );
}
function cook_it() {
$this->varena = true;
}
function je_varena() {
return $this->varena;
}
} // konec tridy Spenat
?>
</programlisting>
</example>
</para>
<para>
Potom z t�chto t��d vytvo��me 2 objekty a vytiskneme informace o nich, v�.
rodi�ovsk�ch t��d. Tak� definujeme n�kter� pomocn� funkce, p�edev��m kv�li
pohodln�mu tisku informac�.
</para>
<para>
<example>
<title>test_script.php</title>
<programlisting role="php">
<pre>
<?php
include "classes.inc";
// pomocn� funkce
function vytiskni_promenne($obj) {
$pole = get_object_vars($obj);
while (list($vlastnost, $hodnota) = each($pole))
echo "\t$vlastnost = $hodnota\n";
}
function vytiskni_metody($obj) {
$pole = get_class_methods(get_class($obj));
foreach ($pole as $metoda)
echo "\tfunction $metoda()\n";
}
function class_parentage($obj, $class) {
global $$obj;
if (is_subclass_of($$obj, $class)) {
echo "Objekt $obj patri do tridy ".get_class($$obj);
echo " ktera je podtridou $class\n";
} else {
echo "Objekt $obj nepatri do podtridy tridy $class\n";
}
}
// instancujeme 2 objekty
$zeleninka = new Zelenina(true,"modra");
$listnaty = new Spenat();
// vytisknout informace o obou objektech
echo "zeleninka: CLASS ".get_class($zeleninka)."\n";
echo "listnaty: CLASS ".get_class($listnaty);
echo ", PARENT ".get_parent_class($listnaty)."\n";
// vytisknout vlastnosti zeleninky
echo "\nzeleninka: Vlastnosti\n";
print_vars($zeleninka);
// a metody objektu listnaty
echo "\nlistnaty: Metody\n";
print_methods($listnaty);
echo "\nRodic:\n";
class_parentage("listnaty", "Spenat");
class_parentage("listnaty", "Zelenina");
?>
</pre>
</programlisting>
</example>
</para>
<para>
Je t�eba poznamenat, �e ve v��e uveden� uk�zce je objekt
<varname>$listnaty</varname> instanc� t��dy <classname>Spenat</classname>,
kter� je podt��dou t��dy <classname>Zelenina</classname>, a posledn� ��st
v��e uveden�ho skriptu tud�� vytiskne:
</para>
<para>
<informalexample>
<programlisting>
[...]
Rodic:
Objekt listnaty nepatri do podtridy tridy Spenat
Object listnaty patri do tridy Spenat, ktera je podtridou tridy Zelenina
</programlisting>
</informalexample>
</para>
</sect2>
</sect1>
</partintro>
<refentry id="function.call-user-method">
<refnamediv>
<refname>call_user_method</refname>
<refpurpose>
Zavolat u�ivatelsky definouvanou metodu ur�it�ho objektu
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed
<function>call_user_method</function>
</funcdef>
<paramdef>string
<parameter>method_name</parameter>
</paramdef>
<paramdef>object
<parameter>obj</parameter>
</paramdef>
<paramdef>mixed
<parameter><optional>parameter</optional></parameter>
</paramdef>
<paramdef>mixed
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Zavol� metodu <parameter>method_name</parameter> objektu
<parameter>obj</parameter>. Uk�zka vyu�it� je n��e, kde definujeme t��du,
vytvo��me objekt a pou�ijeme <function>call_user_method</function> k
nep��m�mu vol�n� jej� <varname>print_info</varname> metody.
<informalexample>
<programlisting role="php">
<?php
class Country {
var $NAME;
var $TLD;
function Country($name, $tld) {
$this->NAME = $name;
$this->TLD = $tld;
}
function print_info($prestr="") {
echo $prestr."Country: ".$this->NAME."\n";
echo $prestr."Top Level Domain: ".$this->TLD."\n";
}
}
$cntry = new Country("Peru","pe");
echo "* Calling the object method directly\n";
$cntry->print_info();
echo "\n* Calling the same method indirectly\n";
call_user_method ("print_info", $cntry, "\t");
?>
</programlisting>
</informalexample>
</para>
<simpara>
Viz tak� <function>call_user_func</function>.
</simpara>
</refsect1>
</refentry>
<refentry id="function.class-exists">
<refnamediv>
<refname>class_exists</refname>
<refpurpose>Zjistit, jestli je t��da definov�na</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>class_exists</function></funcdef>
<paramdef>string <parameter>class_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vr�t� <literal>true</literal>, pokud je t��da
<parameter>class_name</parameter> definov�na, jinak <literal>false</literal>.
</para>
</refsect1>
</refentry>
<refentry id="function.get-class">
<refnamediv>
<refname>get_class</refname>
<refpurpose>Vr�tit jm�no t��dy objektu</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>get_class</function></funcdef>
<paramdef>object <parameter>obj</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� n�zev t��dy j�� je objekt <parameter>obj</parameter>
instanc�.
</para>
<simpara>
Viz tak� <function>get_parent_class</function>,
<function>is_subclass_of</function>
</simpara>
</refsect1>
</refentry>
<refentry id="function.get-class-methods">
<refnamediv>
<refname>get_class_methods</refname>
<refpurpose>Vr�tit pole n�zv� metod t��dy</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_class_methods</function></funcdef>
<paramdef>string <parameter>class_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� pole n�zv� metod definovan�ch pro t��du specifikovanou
argumentem <parameter>class_name</parameter>.
</para>
<simpara>
Viz tak� <function>get_class_vars</function>,
<function>get_object_vars</function>
</simpara>
</refsect1>
</refentry>
<refentry id="function.get-class-vars">
<refnamediv>
<refname>get_class_vars</refname>
<refpurpose>Vr�tit pole defaultn�ch vlastnost� t��dy</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_class_vars</function></funcdef>
<paramdef>string <parameter>class_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� pole defaultn�ch vlastnost� t��dy
<parameter>class_name</parameter>.
</para>
<simpara>
Viz tak� <function>get_class_methods</function>,
<function>get_object_vars</function>
</simpara>
</refsect1>
</refentry>
<refentry id="function.get-declared-classes">
<refnamediv>
<refname>get_declared_classes</refname>
<refpurpose>Vr�tit pole n�zv� definovan�ch t��d</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_declared_classes</function></funcdef>
<paramdef>void</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� pole n�zv� t��d definovan�ch v sou�asn�m skriptu.
</para>
<note>
<para>
V PHP 4.0.1pl2 jsou na za��tku pole vr�ceny je�t� t�i dal�� t��dy:
<classname>stdClass</classname> (definovan� v
<filename>Zend/zend.c</filename>),
<classname>OverloadedTestClass</classname> (definovan� v
<filename>ext/standard/basic_functions.c</filename>)
a <classname>Directory</classname>
(definovan� v <filename>ext/standard/dir.c</filename>).
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.get-object-vars">
<refnamediv>
<refname>get_object_vars</refname>
<refpurpose>Vr�tit asociativn� pole vlastnost� objektu</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_object_vars</function></funcdef>
<paramdef>object <parameter>obj</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� asociativn� pole definovan�ch vlastnost� objektu
<parameter>obj</parameter>. Prom�nn�m deklarovan�m v t��d� j�� je
<parameter>obj</parameter> instanc�, kter�m nebyla p�i�azena hodnota,
nejsou ve vr�cen�m poli obsa�eny.
<example>
<title>Pou�it� <function>get_object_vars</function></title>
<programlisting role="php">
<?php
class Point2D {
var $x, $y;
var $label;
function Point2D($x, $y) {
$this->x = $x;
$this->y = $y;
}
function setLabel($label) {
$this->label = $label;
}
function getPoint() {
return array("x" => $this->x,
"y" => $this->y,
"label" => $this->label);
}
}
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));
// "$label" is declared but not defined
// Array
// (
// [x] => 1.233
// [y] => 3.445
// )
$p1->setLabel("point #1");
print_r(get_object_vars($p1));
// Array
// (
// [x] => 1.233
// [y] => 3.445
// [label] => point #1
// )
?>
</programlisting>
</example>
</para>
<simpara>
Viz tak� <function>get_class_methods</function>,
<function>get_class_vars</function>
</simpara>
</refsect1>
</refentry>
<refentry id="function.get-parent-class">
<refnamediv>
<refname>get_parent_class</refname>
<refpurpose>Vr�tit n�zev rodi�ovsk� t��dy objektu</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>get_parent_class</function></funcdef>
<paramdef>object <parameter>obj</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� n�zev rodi�ovsk� t��dy objektu
<parameter>obj</parameter>.
</para>
<simpara>
Viz tak� <function>get_class</function>,
<function>is_subclass_of</function>
</simpara>
</refsect1>
</refentry>
<refentry id="function.is-subclass-of">
<refnamediv>
<refname>is_subclass_of</refname>
<refpurpose>
Zjistit, jestli objekt pat�� do podt��dy ur�it� t��dy
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>is_subclass_of</function></funcdef>
<paramdef>object <parameter>obj</parameter></paramdef>
<paramdef>string <parameter>superclass</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� <literal>true</literal>, pokud je objekt
<parameter>obj</parameter> instanc� t��dy, kter� je podt��dou
<parameter>superclass</parameter>, jinak <literal>false</literal>.
</para>
<simpara>
Viz tak� <function>get_class</function>,
<function>get_parent_class</function>
</simpara>
</refsect1>
</refentry>
<refentry id="function.method-exists">
<refnamediv>
<refname>method_exists</refname>
<refpurpose>Zjistit, jestli m� t��da ur�itou metodu</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>method_exists</function></funcdef>
<paramdef>object <parameter>object</parameter></paramdef>
<paramdef>string <parameter>method_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce vrac� <literal>true</literal>, pokud m�
<parameter>object</parameter> definov�nu metodu
<parameter>method_name</parameter>, jinak <literal>false</literal>.
</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->