PHP 4.0 – príručka programátora
Autor originálu: W. J. Gilmore
Objektovo orientované programovanie v PHP
Deklarácie tried, objektov a metód
Vytváranie a práca s objektami
Deklarácia tried Class_name a Webpage
class Class_name {
var $attribute_1;
. . .
var $attribute_N;
function function1() {
. . .
}
. . .
function functionN() {
. . .
}
} // end Class_name
class Webpage {
var $bgcolor;
function setBgColor($color) {
$this->bgcolor = $color;
}
function getBgColor() {
return $this->bgcolor;
}
}
// vytvorenie triedy Webpage
$some_page = new Webpage;
// nastavenie premennej $bgcolor patriacej triede Webpage
$some_page->setBgColor("black");
Konštruktory
Použitie konštruktora triedy Webpage na nastavenie premennej triedy
class Webpage {
var $bgcolor;
function Webpage($color) {
$this->bgcolor = $color;
}
}
// volanie konštruktora triedy Webpage
$page = new Webpage("brown");
Deštruktor triedy (je volaný automaticky po ukočení behu PHP skriptu).
unset($Webpage);
$Website->destroy();
Dedičnosť a viacnásobná dedičnosť
Dedičnosť
class Class_name2 extends Class_name1 {
attribute declarations;
method declarations;
}
Použitie dedičnosti na efektívnu reprezentáciu rôznych typov dopravných prostriedkov.
class Vehicle {
var $model;
var $current_speed;
function setSpeed($mph) {
$this->current_speed = $mph;
}
function getSpeed() {
return $this->current_speed;
}
} // end class Vehicle
class Auto extends Vehicle {
var $fuel_type;
function setFuelType($fuel) {
$this->fuel_type = $fuel;
}
function getFuelType() {
return $this->fuel_type;
}
} // end Auto extends Vehicle
class Airplane extends Vehicle {
var $wingspan;
function setWingSpan($wingspan) {
$this->wingspan = $wingspan;
}
function getWingSpan() {
return $this->wingspan;
}
} // end Airplane extends Vehicle
Teraz môžeme vytvoriť rôzne inštancie objektov:
$tractor = new Vehicle;
$gulfstream = new Airplane;
Abstraktné triedy
Vytvorenie abstraktných tried Vehicle a Land. V triede car, ktorá je potomkom triedy Land je potrebné definovať všetky funkcie deklarované v triede Land a Vehicle.
class Vehicle {
Attribute declarations. . .
function Vehicle() {
die("Cannot create Abstract Vehicle class!");
}
Other Method declarations. . .
}
class Land extends Vehicle {
Attribute declarations. . .
function Land() {
die("Cannot create Abstract Land class!");
}
Other Method declarations. . .
}
class car extends Land {
Attribute declarations. . .
Method declarations. . .
}
Preťažovanie metód
class Page {
var $bgcolor;
var $textcolor;
function Page() {
// Determine the number of arguments
// passed in, and create correct method name
$name = "Page".func_num_args();
// Call $name with correct number of arguments passed in
if ( func_num_args() == 0 ) :
$this->$name();
else :
$this->$name(func_get_arg(0));
endif;
}
function Page0() {
$this->bgcolor = "white";
$this->textcolor = "black";
print "Created default page";
}
function Page1($bgcolor) {
$this->bgcolor = $bgcolor;
$this->textcolor = "black";
print "Created custom page";
}
}
$html_page = new Page("red");
Class and Object Functions
get_class_methods()
Zistenie všetkých metód dostupných v jednotlivých triedach
class Airplane extends Vehicle {
var $wingspan;
function setWingSpan($wingspan) {
$this->wingspan = $wingspan;
}
function getWingSpan() {
return $this->wingspan;
}
}
$cls_methods = get_class_methods(Airplane);
// premenná $cls_methods obsahuje pole všetkých metód
// deklarovaných v triedach "Airplane" a "Vehicle".
get_class_vars()
Funkcia vráti pole atribútov definovaných v triede určenej parametrom funkcie.
class Vehicle {
var $model;
var $current_speed;
}
class Airplane extends Vehicle {
var $wingspan;
}
$a_class = "Airplane";
$attribs = get_class_vars($a_class);
// $attribs = array ("wingspan", "model", "current_speed")
get_object_vars()
Funkcia vráti pole atribútov definovaných v triede určenej parametrom funkcie spolu s ich hodnotami. Trieda car, ktorá je potomkom triedy Land (a nepriamym potomkom triedy Vehicle) demonštruje nastavenie všetkých členských premenných, ktorých hodnoty potom získame funkciou get_object_vars.
class Vehicle {
var $wheels;
}
class Land extends Vehicle {
var $engine;
}
class car extends Land {
var $doors;
function car($doors, $eng, $wheels) {
$this->doors = $doors;
$this->engine = $eng;
$$this->wheels = $wheels;
}
function get_wheels() {
return $this->wheels;
}
}
$toyota = new car(2,400,4);
$vars = get_object_vars($toyota);
while (list($key, $value) = each($vars)) :
print "$key ==> $value <br />";
endwhile;
// dostaneme tento výsledok:
// doors ==> 2
// engine ==> 400
// wheels ==> 2
get_class()
Funkcia vráti názov triedy, ktorej inštancia je odovzdaná ako parameter tejto funkcie.
class Vehicle {
. . .
}
class Land extends Vehicle {
. . .
}
// vytvorí triedu $car
$car = new Land;
// premenná $class_a bude obsahovať hodnotu "Land"
$class_a = get_class($car);
| Žiadne dokumenty ani odkazy k tejto stránke. | ||
Generátor typoscriptu
Vytvára typoscript pre bežné použitie. Generátor je jednoduchý na obsluhu, stačí vyplniť zopár položiek formulára.