Stránka 1 z 1

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

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

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?

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