Vysvětlení OOP v php Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1395
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Vysvětlení OOP v php  Vyřešeno

Příspěvekod rhsCZ » 26 srp 2014 09:38

Zdravím najde se tu někdo kdo by mi prosím lépe vysvětlil objektový oerátory v php? Už jsem hledal na google a něco pročítal např. zde, ale vůbec to nechápu a nevim jak to lze užitečně využít, co to vlastně je na co je to dobré apod.
Zatím mi to příjde na nic a nevyužitelné. Píše se tam o nějakých posílání zpráv.
např.

Kód: Vybrat vše

$super_metoda = "nazevMetody";
$objekt->$super_metoda($param1);

Tak nevim na co je to dobré co se dá dělat s tim $objekt apod.
a ještě kdo by mi vysvětlil na co jsou třídy(class) jak lze využít jak se liší např. od funkcí(functions) apod.
Děkuju za odpovědi


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

Reklama
Uživatelský avatar
Spectrik
Level 1
Level 1
Příspěvky: 80
Registrován: březen 09
Bydliště: Třebíč/Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vysvětlení OOP v php

Příspěvekod Spectrik » 26 srp 2014 10:04

Ten kus kódu co tam máš je blbost. V tvém případě je $super_metoda vlastnost objektu (proměnná) a ne metoda (funkce). Správně by to bylo :

Kód: Vybrat vše

public function supermetoda($param)
{
...
}

$objekt->supermetoda($param);


Třída je jakoby prototyp objektu, ze kterého vytváříš instance té dané třídy. Např. máš správu uživatelů. Když chceš vytvořit nového vytvoříš novou instanci třídy User např.

Kód: Vybrat vše


class User
{
/*nejake info o uzivateli */
 private $jmeno;
 private $prijmeni;
 private $vek;
 ....
 
public function __construct($jmeno,$prijmeni,$vek)
{
 $this->jmeno = $jmeno;
 $this->prijmeni = $prijmeni;
 $this->vek = $vek;
}

 private function nastavJmeno($jmeno)
{
$this->jmeno = $jmeno;
}

/*Uloz ho do databaze...

private function save()
{
//pripojeni k DB a ulozeni uzivatele do DB
}
}


Pak bys vytvořil nového uživatel takto: $franta = new User('franta','nejezchleba,'22'); K objektu $franta bys pak přistupoval $franta->nastavJmeno('frantisek');

K čemu je to dobré? elegance, jednoduchost, prehlednost. Dnešní kvalitní aplikaci nenajdeš napsanou jinak než v OOP. Hlavně při použití frameworků bych řekl, že pokud není napsaný v OOP tak je víceméně nanic.

Psal jsem to narychlo a po ránu. Jestli je tam nějaký paskvil tak sorry, ale neměl by být.
PC sítě, programování(HTML5,CSS3,PHP,Javascript,jQuery,Nette,Bootstrap,SQL),Sci-fi,Fantasy,elektrotechnika,automatizace, umělá inteligence

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1395
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vysvětlení OOP v php

Příspěvekod rhsCZ » 26 srp 2014 10:53

nějak nechápu instance
co to tady znamená v čem je to jinné od

Kód: Vybrat vše

$franta->nastavJmeno('frantisek');

než když dám jen

Kód: Vybrat vše

nastavJmeno('frantisek');

a vlastně $this nebo $franta jsou vlastně proměnné ne?
nebotřeba když máš

Kód: Vybrat vše

private function nastavJmeno($jmeno)
{
$this->jmeno = $jmeno;
}

tak by šla použít jen proměnná $jmeno místo toho
$this->jmeno = $jmeno
furt nějak nechápu v čem je to lepší
to jsou přece znaky navíc ne?
vlastně do $this se nastaví jmeno zproměnné $jmeno nebo tak nějak ne?
pardon ale furt to nějak nechápu
a třeba jsem někde viděl, že
je třeba

Kód: Vybrat vše

$this->necoxx
$this->necojine
$this->uplnenecojine

atd. prostě je s tim např. $this-> spojeno více věci

vždyť by to šlo bze toho ne?
jen používat proměnné ne?
např. mám

Kód: Vybrat vše

$log->soubor = "error.log";

tak by šlo jen dát např.

Kód: Vybrat vše

$logsoubor = "error.log";

a dočetl jsem se
-> se jmenuje „objektový operátor“ (object operator) a slouží k oddělení vlastnosti objektu (říká, že to na levé straně je objekt a to na pravé straně jeho vlastnost, tedy atribut nebo metoda)

Tedy:

Kód: Vybrat vše

echo $objekt->a; // vypíše hodnotu atributu „a“ objektu v $objekt
$objekt->foo(); // zavolá metodu foo() objektu v $objekt



co je ta metoda?? jestlyže má objekt více vlastností(co jsem psal výše) tak jak lze objekt využít?? by to šlo napsat i bez objektu a ušetří se ne?


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

IDVert3X
Pohlaví: Nespecifikováno

Re: Vysvětlení OOP v php

Příspěvekod IDVert3X » 26 srp 2014 11:19

$this nieje len taká "obyčajná" premenná!
$this is a reference to the current object, it's most commonly used in object oriented code.


Keď je podľa teba OOP zbytočné, neuč sa ho.
Ja ho ovládam na dosť dobrej úrovni a nepoužívam ho, pokiaľ nemusím... Osobne mi príde ne-OOP kratšie na zápis, ale tak keď robíš profesionálne projekty, musíš ho vedieť.

OOP zápil by som mal napríklad:
$premenna->ulzdosuboru("subor.txt");

bez OOP:
ulozdosuboru($premenna, "subor.txt");
Naposledy upravil(a) IDVert3X dne 26 srp 2014 11:28, celkem upraveno 2 x.

Uživatelský avatar
Spectrik
Level 1
Level 1
Příspěvky: 80
Registrován: březen 09
Bydliště: Třebíč/Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vysvětlení OOP v php

Příspěvekod Spectrik » 26 srp 2014 11:20

Ok, takže zkusím vysvětlit co znamená $this. $this je speciální proměnná, která "ukazuje" jednoduše řečeno sama na svůj objekt resp. Když uděláš instanci této třídy např. $pepa = new User('pepa','zdepa',11) a pak ještě jednu $josefka= new User('Josefka','Milionova'19). Tak v případě $pepa proměnná $this ukazuje na vlastnosti a metody objektu právě $pepa a ne $josefka. Tedy pokud pak zavoláš $pepa->nastavJmeno('pepicek) tak změníš vlastnost (proměnnou) $jmeno objektu $pepa a ne $josefka.

Důležíté !!!! - než se pustíš do práce s OOP, musíš 100% znát a umět terminologii ohledně OOP. Právě si udělat pořádek v tom co je instance,objekt,třída,vlastnost, metoda. Dále si nastudovat co znamenají slovíčka public/private/protected uvedená před metodami a vlastnostmi objektu. Zjistit si co jsou settery a gettery. Dokud nebudeš znát potřebnou základní teorii nemá fakt smysl s OOP ani začínat. Vím o čem mluvím to mi věř. Byl jsem kdysi v podobné situaci jako ty a dokud opravdu nebudeš mít pořádek v teorii tak IMHO OOP nepochopíš.
PC sítě, programování(HTML5,CSS3,PHP,Javascript,jQuery,Nette,Bootstrap,SQL),Sci-fi,Fantasy,elektrotechnika,automatizace, umělá inteligence

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1395
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vysvětlení OOP v php

Příspěvekod rhsCZ » 26 srp 2014 17:17

No dobrá budu hledat na netu a snad časem to někdy pochopím tak díky

Odesláno z mého huawei ascend y300 by rhs


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů