Jei naudoji Smarty, tai turi su Smarty ir rašyt. Su PHP gali tiesiog išplėtimų prikurt, modifier'ių, funkcijų ir t.t.
Bijau suklysti, bet ar tikrai anksčiau galėjai su :: kviesti nestatic metodus? Taip neturėtų būti. Bet kadangi PHP tik palyginus neseniai pradėjo taip spausti dėl OOP, tai gali būt, kad buvo galima. PHP 5.3 jau tikrai negalima taip daryt.
Static funkcijos - tai tokie objekto metodai, kuriuos galima kviest nesukuriant klasės instance'o (nereikia daryti new KlasesObjektas(), neiškviečiamas konstruktorius ir t.t.). Tačiau tokio metodo viduje tu negali naudoti klasėje aprašytų nestatinių metodų ir kintamujų. Pvz.
<?php
class Pirmas {
var $a;
public function __construct($input) {
$this->a = $input;
}
public function do_something() {
print $this->a;
}
static function do_something_static() {
print "Lablablu";
print $this->a; // taip negalima.
self :: print_hello(); // taip galima. Statinis kviecia statini
}
static function print_hello() {
print "Hello";
}
}
$a = new Pirmas("Vitalikas");
$a->do_something(); // isves Vitalikas
$a->do_something_static(); // negalima. Statinis metodas
Pirmas :: do_something_static(); // butu viskas gerai, tik kad kreipiamasi i vidini kintamaji. Del to klaida.
Pirmas :: print_hello(); // isves Hello
?>