mirror of
https://github.com/php/doc-pl.git
synced 2026-04-29 09:43:14 +02:00
6f546897bf
git-svn-id: https://svn.php.net/repository/phpdoc/pl/trunk@81256 c90b9560-bf6c-de11-be94-00142212c4b1
193 lines
4.6 KiB
XML
193 lines
4.6 KiB
XML
<?xml version="1.0" encoding="iso-8859-2"?>
|
|
<!-- EN-Revision: 1.3 Maintainer: dombal Status: Ready -->
|
|
<!-- $Revision: 1.3 $ -->
|
|
<reference id="ref.classobj">
|
|
<title>Klasy/Obiekty</title>
|
|
<titleabbrev>Klasy/Obiekty</titleabbrev>
|
|
|
|
<partintro>
|
|
<section id="classobj.intro">
|
|
&reftitle.intro;
|
|
<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>
|
|
</section>
|
|
<section id="classobj.examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
W tym przykładzie najpierw 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 stworzyć 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";
|
|
}
|
|
}
|
|
|
|
// tworzymy 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>
|
|
</section>
|
|
</partintro>
|
|
|
|
&reference.classobj.functions;
|
|
|
|
</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
|
|
-->
|
|
|