Obejrzałem trochę filmów na youtube.com o programowaniu obiektowym w PHP i jego praktycznym zastosowaniu. Ale nasunęła mi się jedna myśl. W sumie to nie wiem kiedy używać statycznych pól/metod a kiedy instance (zwykłych)? Jest do tego jakieś podejście? Tylko proszę o odpowiedzi inne niż w stylu jak Ci wygodnie
Odpowiedź jest jedna: to zależy.
Możesz utworzyć klasę statyczną ze statycznymi metodami/polami, ale będzie to traktowane tak jakby była ona czymś w rodzaju przestrzeni nazw, zamkniętego zbioru funkcji itd.
class Engine
{
static private $pages = array(
1 => 'index.html'
);
static function show($id)
{
if (isset(self::$pages[$id]))
include_once self::$pages[$id];
}
}
Engine::show(1);
Powyżej jakaś taka prosta ładowarka szablonów. A jeśli stosujesz klasę jako opis rzeczywistości, klasa jest jakimś elementem otaczającego świata, to:
class Gwiazda
{
private $nazwa;
private $magnitudo;
function __construct($nazwa, $magnitudo)
{
$this->nazwa = $nazwa;
$this->magnitudo = $magnitudo;
}
function opis()
{
echo '[Gwiazda ', $this->nazwa, ' o jasności ', $this->magnitudo, ']';
}
}
$pewna_gwiazda = new Gwiazda('Syriusz', -8);
$pewna_gwiazda->opis();
Wiadomo, gwiazd na niebie jest dość sporo, każda ma pewne cechy, które ją opisują - i w tym przypadku stosuje się podejście jak wyżej.
Dzięki bardzo. Trochę to rozjaśniło sprawę.