mirror of
https://github.com/php/doc-pl.git
synced 2026-03-25 15:42:11 +01:00
195 lines
4.3 KiB
XML
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
|
|
-->
|