IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 9. diel - Statika v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Kit
Tvůrce
Avatar
Kit:2.9.2013 11:58

Děkuji za varování s lebkou. Snad to začátečníky odradí od neuváženého používání.

Odpovedať
2.9.2013 11:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michal Žůrek - misaz:2.9.2013 12:16

V ukázce kódu (té dlouhé) máš ty self nějak špatně odsazené, nevím jestli je to záměr nebo chyba.

Ve větě:
Když PPH třídu poprvé načte, vytvoří atribut a nastaví do něj hodnotu 0.
Předpokládám mělo tam být PHP.

Editované 2.9.2013 12:16
 
Odpovedať
2.9.2013 12:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Kit
David Hartinger:2.9.2013 15:41

Lebky jsou i v C# a v Javě :)

Odpovedať
2.9.2013 15:41
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Michal Žůrek - misaz
David Hartinger:2.9.2013 15:42

Díky, opravil jsem.

Odpovedať
2.9.2013 15:42
New kid back on the block with a R.I.P
Avatar
Martin Suchodol:3.12.2013 9:36

Ahoj, doteď jsem s OOP neměl problém až an teď ale ne se sintaxí statiky ale tím že na začátku se píše že statika by se neměla používat ale na konci se tvrdí že statika patří k OOP jako světlo a tma

 
Odpovedať
3.12.2013 9:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Martin Suchodol
David Hartinger:3.12.2013 9:46

Myslím, že je v článku detailně popsáno jak to s ní je.

Odpovedať
3.12.2013 9:46
New kid back on the block with a R.I.P
Avatar
Mazwor
Člen
Avatar
Mazwor:30.7.2014 23:47

Ahoj, vše mi funguje bez problémů, jen bych měl takový drobný dotaz. Bylo by v tomto případě správné atribut $id vytvořit typu private?

private $id;

Vím, že fungovat bude, spíše mi jde o to, zda chápu princip OOP, že by to u tohoto atributu bylo logicky správně.
ID uživatelů přece měnit zvenčí nijak nebudu, automaticky se jim přidělí a dále se neupravuje.

Díky za odpovědi :).

Odpovedať
30.7.2014 23:47
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Odpovedá na Mazwor
Martin Konečný (pavelco1998):31.7.2014 0:32

Záleží na tom, jak chceš ty atributy používat. ID by nejspíše private být mělo, ale budeš na to muset pak udělat nějaký getter.
V určitých případech je ale snadnější definovat ty atributy jako public (ať třeba pro kratší zápis $obj->atribut než přes $obj->getAtribut(), tak i když přiřazuješ hodnoty dynamicky, např. $obj->$atribut = $hodnota).

Odpovedať
31.7.2014 0:32
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Mazwor
Člen
Avatar
Odpovedá na Martin Konečný (pavelco1998)
Mazwor:31.7.2014 1:02

Nojo, to je fakt, pořád jsem uvažoval jen nad úpravou toho ID, ale vůbec mi nedošlo, že tím zamezím i možnosti toto ID někde vypsat. Pak by samozřejmě použití public dávalo smysl, to je zřejmé. Díky ;).

Ještě mě teď při zmínění toho getteru napadlo... Bylo by "programátorsky správné" třeba vytvořit i na práci s private ID public function v nějakém takovém stylu (případně s použitím return namísto echo) nebo je to zbytečně navíc?

public function vypisID() {
    echo($this->id);
}
Editované 31.7.2014 1:02
Odpovedať
31.7.2014 1:02
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Odpovedá na Mazwor
Martin Konečný (pavelco1998):31.7.2014 1:40

Obvykle je lepší, než přímo něco vypisovat, něco jen vrátit. To je účel toho getteru.

public function getId()
{
  return $this->id;
}

V aplikaci se to ID uživatele používá poměrně často, takže když ho budeš potřebovat, jednoduše zavoláš ten getter.

Nevím, jak daleko v OOP jsi, ale aby se ve třídě zamezilo množství setterů a getterů, je možné si ty údaje naházet do pole a pak je brát pomocí magické metody __get().
Také si nejsem jistý, jak se to nejčastěji řeší, ale když ta data taháš z databáze (což pravděpodobně budeš), je lepší si to uložit právě jako pole - vytáhneš ta data všechny naráz a ne po jednom.
Pak máš např. asociativní pole ve tvaru:

$data = array(
  "id" => 123,
  "jmeno" => "Martin",
  "email" => "[email protected]"
);

Nechci se tady rozepisovat, jak to natahat z DB apod., protože by to bylo od tématu, ale klidně napiš PM.

Odpovedať
31.7.2014 1:40
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!