slawek Tue Apr 9 10:13:51 2002 EDT Added files: /phpdoc/pl/functions classobj.xml Log: New translation by DomBal
Index: phpdoc/pl/functions/classobj.xml +++ phpdoc/pl/functions/classobj.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.38 Maintainer: dombal Status: Ready --> <reference id="ref.classobj"> <title>Klasy/Obiekty</title> <titleabbrev>Klasy/Obiekty</titleabbrev> <partintro> <sect1 id="classobj.partintro"> <title>Wprowadzenie</title> <sect2 id="classobj.intro"> <title>O funkcjach</title> <para> Te funkcje pozwalają uzyskać informacje o klasach i ich egzemplarzach, obiektach. Możesz uzyskać informację o nazwie klasy do jakiej należy obiekt, a także jej właściwości i metody. Używając tych funkcji możesz dowiedzieć się nie tylko do jakiej klasy należy obiekt, ale także ustalić jego przodków (np. jaką klasę rozszerza klasa tego obiektu). </para> </sect2> <sect2 id="classobj.example"> <title>Przykład użycia</title> <para> W tym przykładzie wpierw zdefiniujemy bazową klasę i jej rozszerzenie. Klasa bazowa opisuje normalne warzywo, czy jest jadalne czy nie oraz jego kolor. Podklasa <varname>Szpinak</varname> dodaje metodę pozwalającą go zagotować i drugą, która pozwala dowiedzieć się, czy jest zagotowany. </para> <para> <example> <title>classes.inc</title> <programlisting role="php"> <![CDATA[ <?php // klasa bazowa wraz z jej właściwościami i metodami class Warzywo { var $jadalne; var $kolor; function Warzywo( $jadalne, $kolor="zielony" ) { $this->jadalne = $jadalne; $this->kolor = $kolor; } function jest_jadalne() { return $this->jadalne; } function jaki_kolor() { return $this->kolor; } } // koniec klasy Warzywo // rozrzesza klasę bazową class Szpinak extends Warzywo { var $ugotowane = false; function Szpinak() { $this->Warzywo( true, "zielone" ); } function ugotuj() { $this->ugotowane = true; } function jest_ugotowane() { return $this->ugotowane; } } // koniec klasy Szpinak ?> ]]> </programlisting> </example> </para> <para> Teraz możemy powołać dwa egzemplarze tych klas i wydrukować informacje o nich, włączając w to informacje o przodkach. Zdefiniujemy także kilka użytecznych funkcji, głównie po to by uzyskać ładny wydruk zmiennych. </para> <para> <example> <title>test_script.php</title> <programlisting role="php"> <![CDATA[ <pre> <?php include "classes.inc"; // funkcje użytkowe function drukuj_wlasciwosci($obj) { $tab = get_object_vars($obj); while (list($wlasc, $wart) = each($tab)) echo "\t$wlasc = $wart\n"; } function drukuj_metody($obj) { $tab = get_class_methods(get_class($obj)); foreach ($tab as $metoda) echo "\tfunkcja $metoda()\n"; } function przodkowie_klasy($obj, $klasa) { global $$obj; if (is_subclass_of($$obj, $klasa)) { echo "Obiekt $obj należy do klasy ".get_class($$obj); echo ", podklasy $klass\n"; } else { echo "Obiekt $obj nie należy do podklasy $klass\n"; } } // powołujemy 2 egzemplarze obiektów $warzywko = new Warzywo(true,"niebieski"); $lisciaste = new Szpinak(); // wydrukujemy informację o obiektach echo "warzywko: KLASA ".get_class($warzywko)."\n"; echo "lisciaste: KLASA ".get_class($lisciaste); echo ", PRZODEK ".get_parent_class($lisciaste)."\n"; // pokażym właściwości warzywka echo "\nwarzywko: Właściwości\n"; drukuj_wlasciwosci($warzywko); // i metody liściastego echo "\nlisciaste: Metody\n"; drukuj_metody($lisciaste); echo "\nPrzodkowie:\n"; przodkowie_klasy("lisciaste", "Szpinak"); przodkowie_klasy("lisciaste", "Warzywo"); ?> </pre> ]]> </programlisting> </example> </para> <para> Wartą odnotowania rzeczą w powyższym przykładzie jest to, że obiekt <varname>$lisciaste</varname> jest egzemplarzem klasy <classname>Szpinak</classname> która to jest podklasą klasy <classname>Warzywo</classname>, i tak ostatnia część powyższego skryptu pokaże na wyjściu: </para> <para> <informalexample> <programlisting> <![CDATA[ [...] Przodkowie: Obiekt lisciasty nie należy do podklasy Szpinak Obiekt lisciasty należy do klasy Szpinak, podklasy Warzywo ]]> </programlisting> </informalexample> </para> </sect2> </sect1> </partintro> <refentry id="function.call-user-method"> <refnamediv> <refname>call_user_method</refname> <refpurpose> Wywołuje metodę użytkownika na zadanym obiekcie [przestarzałe] </refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>mixed</type><methodname>call_user_method</methodname> <methodparam><type>string</type><parameter>nazwa_metody</parameter></methodparam> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> <methodparam choice="opt"><type>mixed</type><parameter>parametr</parameter></methodparam> <methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam> </methodsynopsis> <warning> <para> Funkcja <function>call_user_method</function> jest przestarzała od PHP 4.1.0, zamiast niej użyj wariacji funkcji <function>call_user_func</function> posługując się składnią <literal>array(&$obiekt, "nazwa_metody")</literal>. </para> </warning> <para> Wywołuje metodę nazwaną <parameter>method_name</parameter> z obiektu <parameter>obiekt</parameter> zdefiniowanego przez użytkownika. Przykład użycia znajdziesz niżej, gdzie definiujemy klasę, powołujemy jej egzemplarz i używamy funkcji <function>call_user_method</function> by pośrednio wywołać jej metodę <varname>drukuj_info</varname>. <informalexample> <programlisting role="php"> <![CDATA[ <?php class Kraj { var $NAZWA; var $TLD; function Kraj($nazwa, $tld) { $this->NAZWA = $nazwa; $this->TLD = $tld; } function drukuj_info($przedc="") { echo $przedc."Kraj: ".$this->NAZWA."\n"; echo $przedc."Domena TLD: ".$this->TLD."\n"; } } $krj = new Kraj("Peru","pe"); echo "* Wywołuję metodę na obiekcie bezpośrednio\n"; $krj->drukuj_info(); echo "\n* Wywołuję tę samą metodę pośrednio\n"; call_user_method ("drukuj_info", $krj, "\t"); ?> ]]> </programlisting> </informalexample> </para> <simpara> Patrz także: <function>call_user_func_array</function>, <function>call_user_func</function>, <function>call_user_method_array</function>. </simpara> </refsect1> </refentry> <refentry id="function.call-user-method-array"> <refnamediv> <refname>call_user_method_array</refname> <refpurpose> Wywołuje metodę użytkownika zadaną z tablicą parametrów [przestarzałe] </refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>mixed</type><methodname>call_user_method_array</methodname> <methodparam><type>string</type><parameter>nazwa_metody</parameter></methodparam> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> <methodparam choice="opt"><type>array</type><parameter>tabparam</parameter></methodparam> </methodsynopsis> <warning> <para> Funkcja <function>call_user_method_array</function> jest przestarzała od PHP 4.1.0, zamiast niej użyj wariacji funkcji <function>call_user_func_array</function> posługując się składnią <literal>array(&$obiekt, "nazwa_metody")</literal>. </para> </warning> <para> Wywołuje metodę nazwaną <parameter>nazwa_metody</parameter> z obiektu <parameter>obiekt</parameter> zdefiniowanego przez użytkownika, używając parametrów z <parameter>tabparam</parameter>. </para> <para> Patrz także: <function>call_user_func_array</function>, <function>call_user_func</function>, <function>call_user_method</function>. </para> <note> <para> Funkcja ta została dodana do kodu w CVSie po wydaniu PHP 4.0.4pl1 </para> </note> </refsect1> </refentry> <refentry id="function.class-exists"> <refnamediv> <refname>class_exists</refname> <refpurpose>Sprawdza czy klasa została zdefiniowana</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>bool</type><methodname>class_exists</methodname> <methodparam><type>string</type><parameter>nazwa_klasy</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca &true; jeżeli klasa zadana przez parametr <parameter>nazwa_klasy</parameter> została zdefiniowana, &false; w przeciwnym wypadku. </para> </refsect1> </refentry> <refentry id="function.get-class"> <refnamediv> <refname>get_class</refname> <refpurpose>Zwraca nazwę klasy zadanego obiektu</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>string</type><methodname>get_class</methodname> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca nazwę klasy, której <parameter>obiekt</parameter> jest egzemplarzem. Zwraca &false; jeżeli <parameter>obiekt</parameter> nie jest obiektem. </para> <note> <simpara> <function>get_class</function> zwraca nazwę klasy zdefiniowanej przez użytkownika małymi literami. Klasa zdefiniowana w rozszerzeniu PHP jest zwracana w jej oryginalnej notacji. </simpara> </note> <simpara> Patrz także: <function>get_parent_class</function>, <function>gettype</function>, <function>is_subclass_of</function>. </simpara> </refsect1> </refentry> <refentry id="function.get-class-methods"> <refnamediv> <refname>get_class_methods</refname> <refpurpose>Zwraca tablicę nazw metod danej klasy</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>array</type><methodname>get_class_methods</methodname> <methodparam><type>mixed</type><parameter>nazwa_klasy</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca tablicę nazw metod zdefiniowanych dla klasy określonej przez parametr <parameter>nazwa_klasy</parameter>. </para> <note> <para> Od PHP 4.0.6, możesz określić obiekt przez jego samego, zamiast przez parametr <parameter>nazwa_klasy</parameter>. Dla przykładu: <informalexample> <programlisting> <![CDATA[ $metody_klasy = get_class_methods($moja_klasa); // zobacz niżej większy przykład ]]> </programlisting> </informalexample> </para> </note> <para> <example> <title><function>get_class_methods</function> przykład</title> <programlisting role="php"> <![CDATA[ <?php class mojaklasa { // konstruktor function mojaklasa() { return(true); } // metoda 1 function mojafunk1() { return(true); } // metoda 2 function mojafunk2() { return(true); } } $moj_obiekt = new mojaklasa(); $metody_klasy = get_class_methods(get_class($moj_obiekt)); foreach ($metody_klasy as $nazwa_metody) { echo "$nazwa_metody\n"; } ?> ]]> </programlisting> </example> </para> <para> Wyświetli: <informalexample> <programlisting> <![CDATA[ mojaklasa mojafunk1 mojafunk2 ]]> </programlisting> </informalexample> </para> <simpara> Patrz także: <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> Zwraca tablicę domyślnych właściwości klasy </refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>array</type><methodname>get_class_vars</methodname> <methodparam><type>string</type><parameter>nazwa_klasy</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwróci tablicę asocjacyjną domyślnych właściwości klasy. Elementy wynikowej tablicy są w formie <parameter>nazwzmien => wartość</parameter> </para> <note> <para> Niezainicjalizowane zmienne klasy nie będą raportowane przez funkcję <function>get_class_vars</function>. </para> </note> <para> <example> <title><function>get_class_vars</function> przykład</title> <programlisting role="php"> <![CDATA[ <?php class mojaklasa { var $zm1; // ta nie ma domyślenj wartości... var $zm2 = "xyz"; var $zm3 = 100; // konstruktor function mojaklasa() { return(true); } } $moja_klasa = new mojaklasa(); $wlasciwosci_klasy = get_class_vars(get_class($moja_klasa)); foreach ($wlasciwosci_klasy as $nazwa => $wartosc) { echo "$nazwa : $wartosc\n"; } ?> ]]> </programlisting> </example> </para> <para> Wyświetli: <informalexample> <programlisting> <![CDATA[ zm2 : xyz zm3 : 100 ]]> </programlisting> </informalexample> </para> <simpara> Patrz także: <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>Zwraca tablicę z nazwami zdefiniowanych klas</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>array</type><methodname>get_declared_classes</methodname> <void/> </methodsynopsis> <para> Funkcja ta zwraca tablicę nazw klas zdefiniowanych w bieżącym skrypcie. </para> <note> <para> W PHP 4.0.1pl2, zwracane są trzy dodatkowe klasy na początku tablicy: <classname>stdClass</classname> (zdefiniowana w <filename>Zend/zend.c</filename>), <classname>OverloadedTestClass</classname> (zdefiniowana w <filename>ext/standard/basic_functions.c</filename>) oraz <classname>Directory</classname> (zdfiniowana w <filename>ext/standard/dir.c</filename>). </para> <para> Warto zauważyć, że zależnie od tego jakie biblioteki zostały dodane do PHP, mogą pojawić się dodatkowe klasy. To znaczy, że nie będzie można zdefiniować własnych klas używając tych nazw. Istnieje lista predefiniowanych klas w sekcji <link linkend="reserved.classes">Predefined Classes</link> w dodatkach. </para> </note> </refsect1> </refentry> <refentry id="function.get-object-vars"> <refnamediv> <refname>get_object_vars</refname> <refpurpose>Zwraca tablicę asocjacyjną właściwości obiektu</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>array</type><methodname>get_object_vars</methodname> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca tablicę asocjacyjną zdfiniowanych właściwości określonego obiektu <parameter>obiekt</parameter>. Jeżeli zmienne zadeklarowane w klasie której <parameter>obiekt</parameter> jest egzemplarzem, nie mają przypisanej wartości, to te nie będą zwrócone w tablicy. <example> <title>Użycie <function>get_object_vars</function></title> <programlisting role="php"> <![CDATA[ <?php class Punkt2D { var $x, $y; var $opis; function Punkt2D($x, $y) { $this->x = $x; $this->y = $y; } function ustawOpis($opis) { $this->opis = $opis; } function pobierzPunkt() { return array("x" => $this->x, "y" => $this->y, "opis" => $this->opis); } } // "$opis" jest zadeklarowany lecz niezdefiniowany $p1 = new Punkt2D(1.233, 3.445); print_r(get_object_vars($p1)); $p1->ustawOpis("punkt #1"); print_r(get_object_vars($p1)); ?> ]]> </programlisting> </example> Wynikiem powyższego programu będzie: <screen> <![CDATA[ Array ( [x] => 1.233 [y] => 3.445 ) Array ( [x] => 1.233 [y] => 3.445 [opis] => punkt #1 ) ]]> </screen> </para> <simpara> Patrz także: <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>Pobiera nazwę klasy przodka obiektu bądź klasy</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>string</type><methodname>get_parent_class</methodname> <methodparam><type>mixed</type><parameter>obiekt</parameter></methodparam> </methodsynopsis> <para> Jeżeli <parameter>obiekt</parameter> jest obiektem, zwraca nazwę klasy przodka klasy której <parameter>obiekt</parameter> jest egzemplarzem. </para> <para> Jeżeli <parameter>obiekt</parameter> jest ciągiem znakowym, zwraca nazwę klasy przodka klasy o tej nazwie. Ta funkcjonalność została dodana w PHP 4.0.5. </para> <simpara> Patrz także: <function>get_class</function>, <function>is_subclass_of</function> </simpara> </refsect1> </refentry> <refentry id="function.is-a"> <refnamediv> <refname>is_a</refname> <refpurpose> Zwraca &true; jeżeli obiekt jest tej klasy, lub ta klasa jest jednym z jego przodków </refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>bool</type><methodname>is_a</methodname> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> <methodparam><type>string</type><parameter>nazwa_klasy</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca &true; jeżeli obiekt jest tej klasy, lub ta klasa jest jednym z jego przodków, &false; w przeciwnym przypadku. </para> <simpara> Patrz także: <function>get_class</function>, <function>get_parent_class</function>, <function>is_subclass_of</function>. </simpara> </refsect1> </refentry> <refentry id="function.is-subclass-of"> <refnamediv> <refname>is_subclass_of</refname> <refpurpose> Zwraca &true; jeżeli klasa jest jednym z przodków obiektu </refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>bool</type><methodname>is_subclass_of</methodname> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> <methodparam><type>string</type><parameter>nazwa_klasy</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca &true; jeżeli obiekt <parameter>obiekt</parameter> należy do klasy która jest podklasą klasy <parameter>nazwa_klasy</parameter>, &false; w przeciwnym przypadku. </para> <simpara> Patrz także: <function>get_class</function>, <function>get_parent_class</function>, <function>is_a</function>. </simpara> </refsect1> </refentry> <refentry id="function.method-exists"> <refnamediv> <refname>method_exists</refname> <refpurpose>Sprawdza czy istnieje metoda dla klasy</refpurpose> </refnamediv> <refsect1> <title>Opis</title> <methodsynopsis> <type>bool</type><methodname>method_exists</methodname> <methodparam><type>object</type><parameter>obiekt</parameter></methodparam> <methodparam><type>string</type><parameter>nazwa_metody</parameter></methodparam> </methodsynopsis> <para> Funkcja ta zwraca &true; jeżeli metoda określona przez parametr <parameter>nazwa_metody</parameter> został zdefiniowany na obiektu <parameter>object</parameter>, &false; w przeciwnym przypadku. </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 indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->