NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 15:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze – Lekce 7 - Dědičnost 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
urso
Člen
Avatar
Odpovídá na Aleš Hamerle
urso:26.1.2017 11:34

Ahoj,
asi je problém v jednoduchých uvozovkách, je rozdíl napsat

echo "Něco";

a

echo 'Něco';
Odpovědět
26.1.2017 11:34
Ne estas pano sen laboro!
Avatar
Petr
Člen
Avatar
Odpovídá na Pavel Habžanský
Petr:21.7.2018 23:19

Dle mého názoru je správný postup takový, že parametry v konstruktoru nikdo zpětně měnit nebude (tedy pokud už se třída někde používá), protože ten guláš už by nikdo nemusel dát dohromady.

Odpovědět
21.7.2018 23:19
Kdyby zakladatel nebyl arogantni k****, mohl byt ITNetwork fakt ceska oborova socialni sit.
Avatar
Daniel Troszok:25.10.2018 22:19

My budeme ale chtít do naší aplikace přidat Javistu (pardon, ale PHPista zní divně ) Když mi napíšete jak se programátorům v tomto jazyce říká, změním to.

Já bych se zatím nazval PéHáPako %P

 
Odpovědět
25.10.2018 22:19
Avatar
Marian Bubenik:7.2.2019 10:10

Zdravím, může mi prosím někdo poradit, proč se mi objeví hláška:
"Fatal error: Uncaught Error: Call to protected method Clovek::celeJmeno() from context '' in C:\W..."?
Použil jsem pro zkušební výpis v index.php:
" echo $karel->celeJmeno()."<br>"; "

 
Odpovědět
7.2.2019 10:10
Avatar
Odpovídá na Marian Bubenik
Michal Šmahel:7.2.2019 15:43

Ahoj, je to poměrně jednoduché - stačí si pozorně přečíst danou hlášku. Je v ní uvedeno, že se snažíš volat metodu, která není veřejná, ale protected. Jak je uvedeno v článku, protected slouží pro vnitřní účely tříd. Konkrétně se používají pro zpřístupnění privátních metod pro potomky třídy, kde jsou deklarované či implementované. Metodu celeJmeno() tedy můžeš využít pouze v potomcích třídy Clovek - např. ve třídě Javista.

Odpovědět
7.2.2019 15:43
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Šmahel
Marian Bubenik:7.2.2019 23:24

Ahoj, děkuji za odpověď, tomu rozumím, ale...
"... Metodu nyní nebudeme schopni zavolat v index.php (mimo třídu), ale budeme ji schopni zavolat jak ve třídě Clovek, tak ve třídě Javista."
Jak sám píšeš: "Metodu celeJmeno() tedy můžeš využít pouze v potomcích třídy Clovek - např. ve třídě Javista."

Tedy chápu to tak, že pokud si udělám instanci třídy Clovek nebo Javista, měl bych být schopný metodu použít.
proto jsem vytvoril (podle lekce)
$jan = new Javista('Jan', 'Nový', 24, 'Eclipse');
a myslel, že metodu celeJmeno() použiju v $jan->...
echo $jan->celeJmeno();
Asi to špatně chápu. :)

 
Odpovědět
7.2.2019 23:24
Avatar
Odpovídá na Marian Bubenik
Michal Šmahel:8.2.2019 10:30

Ano, chápeš to špatně. Když si uděláš instanci nějaké třídy (vytvoříš objekt), již se jedná o přístup zvenčí. K tomuto přístupu potřebuješ modifikátor public (veřejný). Private a protected můžeš využít pouze v daných třídách (souborech).

Odpovědět
8.2.2019 10:30
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Šmahel
Marian Bubenik:8.2.2019 10:36

Ok, díky, jak by tedy prakticky vypadalo použití (využití) ve třídách Clovek nebo Javista?

 
Odpovědět
8.2.2019 10:36
Avatar
Odpovídá na Marian Bubenik
Michal Šmahel:8.2.2019 10:56

Je to myšleno jako pomocná metoda. Třída Clovek by mohla mít metodu predstavSe(), která by této metody využívala. Javista by mohla mít metodu napisSvujCopy­right(), také by ji využila.

// Clovek
public function predstavSe(): string
{
    return "Jmenuji se " . $this->celeJmeno();
}

// Javista
public function napisSvujCopyright(int $pocatecniRok): string
{
    return "Copyright © " . parent::celeJmeno() . " {$pocatecniRok}-" . date("Y");
}

// index.php
$jarda = new Clovek(...);
echo $jarda->predstavSe();

$standa = new Javista(...);
echo $standa->napisSvujCopyright(2018);

Za syntaktické chyby se omlouvám. Původně jsem se nějak špatně orientoval a psal to v Javě a navíc to píšu na telefonu. Jde tu však o to nastínit reálné použití a na to by to mělo jistě stačit.

Editováno 8.2.2019 10:58
Odpovědět
8.2.2019 10:56
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Šmahel
Marian Bubenik:8.2.2019 16:19

Ale aby mi fungovalo použití metody celeJmeno(), tak stejně tato metoda musí být public... ne?

 
Odpovědět
8.2.2019 16:19
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 45.