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(&amp;$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(&amp;$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
-->

Reply via email to