Programowanie obiektowe w PHP
php_oop_1_1.php
|
Prosta klasa z jednym polem publicznym i metodą publiczną.
Pokaż kod PHP
Plik: "php_oop_1_1.php"
<?php class MojaKlasa { public $nazwa = 'Jakaś nazwa';//modyfikator jest konieczny public function dajNazwe() { return $this->nazwa; } } $klasa = new MojaKlasa(); echo $klasa->dajNazwe(); echo "<br />".$klasa->nazwa; ?>
Zwiń
|
|
php_oop_1_2.php
|
Badamy znacznie modyfikatorów dostępu.
Pokaż kod PHP
Plik: "php_oop_1_2.php"
<?php class Modyfikatory{ public $publiczna = "publiczna"; protected $chroniona = "chroniona"; private $prywatna = "prywatna"; public function dajTajneDane(){ return array("chroniona" => $this -> chroniona, "prywatna" => $this -> prywatna); } } $m = new Modyfikatory(); $tajne = $m -> dajTajneDane(); echo $m->publiczna; echo $tajne["chroniona"]; echo $tajne["prywatna"]; echo "<br />=== Drugi test ===<br />"; class MojaKlasa { public $publiczna = 'Zmienna publiczna'; private $prywatna = 'Zmienna prywatna'; protected $chroniona = 'Zmienna chroniona'; public function getPrywatna() { return $this->prywatna; } public function getChroniona() { return $this->chroniona; } } //klasa MojaSuperKlasa dziedziczy z MojaKlasa class MojaSuperKlasa extends MojaKlasa { public function nowaPrywatna() { return parent::getPrywatna(); } public function nowaChroniona() { return $this->chroniona; } } $klasa = new MojaKlasa(); //echo $klasa->publiczna.'<br>'; //echo $klasa->prywatna.'<br>'; //echo $klasa->chroniona.'<br>'; //echo $klasa->getPrywatna().'<br>'; //echo $klasa->getChroniona().'<br>'; $superKlasa = new MojaSuperKlasa(); //echo $superKlasa->publiczna.'<br>'; //echo $superKlasa->chroniona.'<br>'; //echo $superKlasa->prywatna.'<br>'; echo $superKlasa->getChroniona().'<br>'; echo $superKlasa->getPrywatna().'<br>'; echo $superKlasa->nowaPrywatna().'<br>'; echo $superKlasa->nowaChroniona(); ?>
Zwiń
|
|
php_oop_1_3.php
|
Klasy abstrakcyjne i konstruktory (wprowadzenie).
Pokaż kod PHP
Plik: "php_oop_1_3.php"
<?php abstract class Auto { public $pojemnosc; public $kolor; public $iloscDrzwi; //Cos co jest identyczne we wszystkich autach public function wlaczKierunkowskaz() { echo 'Wlacz kierunkowskaz<br>'; } abstract public function zmienPlyn($gatunek='fabryczny'); public function __construct() { echo 'Uruchomiono konstruktor dla klasy Auto<br>'; } } class Nissan extends Auto { public function __construct() { parent::__construct(); echo 'Uruchomiono konstruktor klasy Nissan<br>'; } public function zmienPlyn($gatunek='fabryczny') { return 'Zmieniono plyn na '.$gatunek; } public function wlaczKierunkowskaz() { parent::wlaczKierunkowskaz(); echo 'Kierunkowskaz niby taki sam a jednak troche inny<br>'; } } class Polonez extends Auto { public function zmienPlyn($gatunek='fabryczny') { return 'Zmieniono płyn w polonezie na '.$gatunek; } } $almera = new Nissan(); $almera->pojemnosc = 1300; $almera->kolor = 'czerwony'; $almera->iloscDrzwi = 3; echo $almera->zmienPlyn('borygo').'<br>'; $almera->wlaczKierunkowskaz().'<br>'; $polonez = new Polonez(); echo $polonez->zmienPlyn('petrygo').'<br>'; $polonez->wlaczKierunkowskaz(); ?>
Zwiń
|
|
php_oop_1_4.php
|
Konstruktory - ciąg dalszy.
Pokaż kod PHP
Plik: "php_oop_1_4.php"
<?php class Foo { public $zmienna; public function __construct($zmienna = "Wartość domyślna") { $this->zmienna = $zmienna; } } $o1 = new Foo(); echo $o1->zmienna.'<br>'; $o2 = new Foo('Nowa zmienna nowego obiektu'); echo $o2->zmienna.'<br>'; $o3 = new Foo('Jeszcze inna wartość'); echo $o3->zmienna.'<br>'; ?>
Zwiń
|
|
php_oop_1_5.php
|
Nowa składnia konstruktora.
Pokaż kod PHP
Plik: "php_oop_1_5.php"
<?php class Foo { public $z; //Kiedys to bylo konstruktorem, ale obecnie, nawet //gdy nie ma __construct, traktowane jest jak //zwykla metoda function Foo() { $this->z = 'Konstruktor Foo'; } function __construct() { $this->z = 'Konstruktor __construct'; } } $oF = new Foo(); echo $oF->z; ?>
Zwiń
|
|
php_oop_1_6.php
|
Klasa reprezentująca tabelę.
Pokaż kod PHP
Plik: "php_oop_1_6.php"
<?php class Tabela { private $ramka; private $iloscWierszy; private $iloscKolumn; private $zawartoscTabeli = array(); private $kolorTabeli = array(); private $valignTabeli = array(); private $halignTabeli = array(); public function __construct($ramka = true) { $this->ramka = $ramka; $this->iloscWierszy = 0; $this->iloscKolumn = 0; $this->zawartoscTabeli = array(); $this->kolorTabeli = array(); $this->valignTabeli = array(); $this->halignTabeli = array(); } public function ustawRamke($ramka = true) { $this->ramka = $ramka; } public function ustawWartosc($wiersz, $kolumna, $wartosc, $kolor = 'black', $valign = 'center', $halign = 'center') { $this->iloscWierszy = max($wiersz, $this->iloscWierszy); $this->iloscKolumn = max($kolumna, $this->iloscKolumn); $this->zawartoscTabeli[$wiersz][$kolumna] = $wartosc; $this->kolorTabeli[$wiersz][$kolumna] = $kolor; $this->valignTabeli[$wiersz][$kolumna] = $valign; $this->halignTabeli[$wiersz][$kolumna] = $halign; } public function wypiszTabele() { $tabela = null; if (($this->ramka) == true) { $wklejka = ' border="1"'; } else { $wklejka = ""; } $tabela .= '<table'.$wklejka.'>'; for ($wiersz = 1; $wiersz <= $this->iloscWierszy; $wiersz++) { $tabela .='<tr>'."\n"; for ($kolumna = 1; $kolumna <= $this->iloscKolumn; $kolumna++) { if (isset($this->zawartoscTabeli[$wiersz][$kolumna])) { $tabela .= '<td width="40" height="40" style="color: '.$this->kolorTabeli[$wiersz][$kolumna].'; '; $tabela .= 'text-align: '.$this->halignTabeli[$wiersz][$kolumna].'; '; $tabela .= 'vertical-align: '.$this->valignTabeli[$wiersz][$kolumna].'">'; $tabela .= htmlspecialchars($this->zawartoscTabeli[$wiersz][$kolumna]); } else { $tabela .='<td width = "40" height = "40">'; $tabela .= ' '; } $tabela .= '</td>'."\n"; } $tabela .= '</tr>'."\n"; } $tabela .= '</table>'; echo $tabela; } } $tab = new Tabela(); $tab->ustawRamke(false); $tab->ustawWartosc(1,2,'w1', 'red', 'top', 'right'); $tab->ustawWartosc(4,4,'w2', 'yellow', 'bottom', 'left'); $tab->wypiszTabele(); /* $tab2 = new Tabela(); for ($i = 1; $i <= 100; $i++) { for ($j = 1; $j <= 100; $j++) { $tab2->ustawWartosc($i,$j, $i*$j); } } $tab2->ustawRamke(false); $tab2->wypiszTabele(); $tab2->ustawRamke(true); $tab2->wypiszTabele(); */ ?>
Zwiń
|
|
|