Stránka 1 z 1
Vysvětlení OOP v php
Napsal: 26 srp 2014 09:38
od rhsCZ
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
Re: Vysvětlení OOP v php
Napsal: 26 srp 2014 10:04
od Spectrik
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.
Re: Vysvětlení OOP v php
Napsal: 26 srp 2014 10:53
od rhsCZ
nějak nechápu instance
co to tady znamená v čem je to jinné od
než když dám jen
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
tak by šlo jen dát např.
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?
Re: Vysvětlení OOP v php
Napsal: 26 srp 2014 11:19
od IDVert3X
$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");
Re: Vysvětlení OOP v php
Napsal: 26 srp 2014 11:20
od Spectrik
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íš.
Re: Vysvětlení OOP v php
Napsal: 26 srp 2014 17:17
od rhsCZ
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