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.
eval('function clone($object) {
return $object;
}
');
}
?>
kuk cloning2.php
Klonování
Klonování
Můžeme definovat methodu __clone(), která bude
Můžeme definovat methodu __clone(), která bude
volána při klonování
volána při klonován
Například můžeme sledovat, zda daný objekt je
Například můžeme sledovat, zda daný objekt je
klon
klo
Klonování
Klonování
<?php
class A {
private $x = 1;
public $is_clone = false;
function __clone()
{
$this->is_clone =
true;
$this->is_clone =
true
}
}
$instance1 =
new A();
$instance2 =
clone $instance1;
echo $instance1->is_clone?"inst1 je klon":"inst1 neni klon";echo $instance2->is_clone?"inst2 je klon":"inst2 neni klon";?>
kuk cloning2.php
Dynamické metody
Dynamické metod
Pokud
Poku zavol
zavo áme
ám metodu, která neexistuje:
metodu, která neexistuje
– bude zavolána funkce
bude zavolána funkce __call(),
__call(), pokud
poku existuje
existuj
– pokud
poku neexistuje
neexistuj funkce
funkc __call(),
__call(), dojde
dojd k
k chyb
chy ě
Můžeme řešit volání neexistujících metod pomocí
Můžeme řešit volání neexistujících metod pomocí
metody __
metody _ call
cal ()
(
Této metodě je předáno jméno a pole argumentů
Této metodě je předáno jméno a pole argument
Této metodě je předáno jméno a pole argumen
Této metodě je předáno jméno a pole argume
Dynamické metody
Dynamické metod
<?php
class math {
function __call($name, $args){
switch ($name) {
case 'add':
return array_sum($args);
case 'divide':
$val = array_shift($args);
foreach ($args as $v) $val /= $v;
return $val;
return $val
default: trigger_error(sprintf('Zavolána
nepodporovaná funkce'.get_class($this).'->'.$name), E_USER_ERROR);
}
}
}
$m =
new math();
echo $m->add(1,2); // 3echo $m->divide(8,2); // 4echo $m->substract(2,3); // error?>
kuk dynamic.php
Dynamické vlastnosti
Dynamické vlastnost
Některé vlastnosti mohou být definovány za běhu
Některé vlastnosti mohou být definovány za běhu
programu.