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