1
0
mirror of https://github.com/php/doc-pl.git synced 2026-03-24 15:12:16 +01:00
Files
archived-doc-pl/reference/classobj/examples.xml
Maciej Sobaczewski f7f2d3fb56 Sync with EN
2024-08-31 07:37:22 +02:00

195 lines
4.3 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 6f11457f11d91834e1240c3351d8c4e289371b6d Maintainer: joeaccord Status: ready -->
<!-- $Revision$ -->
<!-- CREDITS: dombal, sobak -->
<appendix xml:id="classobj.examples">
&reftitle.examples;
<para>
W tym przykładzie najpierw zdefiniujemy bazową klasę i jej
rozszerzenie. Klasa bazowa opisuje ogólne warzywo,
czy jest jadalne oraz jego kolor. Podklasa <varname>Szpinak</varname>
dodaje metodę pozwalającą go ugotować, i drugą, która pozwala
dowiedzieć się, czy jest ugotowany.
</para>
<para>
<example>
<title>Definicje klasy</title>
<para><varname>Warzywo</varname></para>
<programlisting role="php">
<![CDATA[
<?php
class Warzywo {
public $jadalne;
public $kolor;
public function __construct($jadalne, $kolor="zielony")
{
$this->jadalne = $jadalne;
$this->kolor = $kolor;
}
public function czyJadalne()
{
return $this->jadalne;
}
public function pobierzKolor()
{
return $this->kolor;
}
}
?>
]]>
</programlisting>
<para><varname>Szpinak</varname></para>
<programlisting role="php">
<![CDATA[
<?php
class Szpinak extends Warzywo {
public $ugotowane = false;
public function __construct()
{
$this->Warzywo(true, "zielone");
}
public function ugotuj()
{
$this->ugotowane = true;
}
function czyUgotowane()
{
return $this->ugotowane;
}
}
?>
]]>
</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[
<?php
// zarejestruj autoloader aby automatycznie ładować klasy
spl_autoload_register();
function drukujWlasciwosci($obj)
{
foreach (get_object_vars($obj) as $wlasc => $wart) {
echo "\t$wlasc = $wart\n";
}
}
function drukujMetody($obj)
{
$tab = get_class_methods(get_class($obj));
foreach ($tab as $metoda) {
echo "\tfunkcja $metoda()\n";
}
}
function przodkowieKlasy($obj, $klasa)
{
if (is_subclass_of($obj, $klasa)) {
echo "Obiekt należy do klasy " . get_class($obj);
echo ", a subclass of $klasa\n";
} else {
echo "Obiekt nie należy do podklasy $klasa\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żmy właściwości warzywka
echo "\nwarzywko: Właściwości\n";
drukujWlasciwosci($warzywko);
// i metody liściastego
echo "\nliściaste: Metody\n";
drukujMetody($lisciaste);
echo "\nPrzodkowie:\n";
przodkowieKlasy($lisciaste, Szpinak::class);
przodkowieKlasy($lisciaste, Warzywo::class);
?>
]]>
</programlisting>
&examples.outputs;
<screen>
<![CDATA[
warzywko: KLASA Warzywo
liściaste: KLASA Szpinak, PRZODEK Warzywo
warzywko: Właściwości
jadalne = 1
kolor = blue
liściaste: Metody
function __construct()
function ugotuj()
function czyUgotowane()
function czyJadalne()
function pobierzKolor()
Przodkowie:
Obiekt nie należy do podklasy Szpinak
Obiekt należy do klasy Szpinak, podklasy Warzywo
]]>
</screen>
<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>
</example>
</para>
</appendix>
<!-- 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:"~/.phpdoc/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
-->