Jazyk PHP - pokračování
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
jako zavolána funkce __autoload().
jako zavolána funkce __autoload()
Zde se můžeme situaci zachránit.
Zde se můžeme situaci zachránit
Vyu
Vy žití
žit
Využijeme funkci __
Využijeme funkci _ autoload
autoloa k vkládání souborů s
k vkládání souborů s
definicí tříd v okamžiku jejich potřeby.
definicí tříd v okamžiku jejich potřeby
Nahradíme tím instrukci
Nahradíme tím instrukci include
includ _once
onc
– include
includ _once
onc je značně náročná
je značně náročná
Můžeme si zorganizovat
Můžeme si zorganizovat struturu
strutur našeho projektu
našeho projektu
takto
takt
/class
trida1.php
trida2.php
tridaš.php
Autoload
Autoloa
<?php
class Trida1 {
public $x = 1;
}
?>
Soubor trida1.php, uložen v adresáři /class
Nějaký skript
kuk definiceA.php
<?php
function __autoload($classname) {
$file_name = strtolower($classname).".php";
include("/class/".$file_name);
}
// trida A zatim nebyla definovana, bude zavolana fce __autoload
$a =
new Trida1();
echo $a->x;?>
kuk autoload.php
Typová kontrola (hinting)
Typová kontrola (hinting
PHP 5 zavádí možnost kontroly typu složitých dat.
PHP 5 zavádí možnost kontroly typu složitých dat.
typů (tedy objekty, pole)
typů (tedy objekty, pole
Lze použít jen u parametrů funkcí/metod
Lze použít jen u parametrů funkcí/meto
// mejme tridu A
class A {
private $text = null;
// text je typu string, nemuzeme pouzit hinting, je to jednoduchy dat. typ
public function __construct($text) {
$this->text = $text;
}
public function getText(){
return $this->text;
}
}
// mejme jinou tridu
class B {
private $messages = array();
public function __construct() {}
// zde je typova kontrola, neni mozne volat jinak nez s instanci
// tridy A jako param
public function addMessage(A $message) {
$this->messages[] = $message;
}
public function getMessages ($delimiter) {
return $this->messages;
}
}
$b = new B();//$b->addMessage("vzkaz"); // toto je chyba, neprojde pres type hinting
$b->addMessage(new A("vkaz")); // toto je OK, kontrola typu v poho