NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Lekce 9 - Statika v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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í.

Odpovědět
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.

Editováno 2.9.2013 12:16
 
Odpovědět
2.9.2013 12:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:2.9.2013 15:41

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

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

Díky, opravil jsem.

Odpovědět
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

 
Odpovědět
3.12.2013 9:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá 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.

Odpovědět
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 :).

Odpovědět
30.7.2014 23:47
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Odpovídá 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).

Odpovědět
31.7.2014 0:32
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Mazwor
Člen
Avatar
Odpovídá 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);
}
Editováno 31.7.2014 1:02
Odpovědět
31.7.2014 1:02
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Odpovídá 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.

Odpovědět
31.7.2014 1:40
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 21.