Starší komentáře ke článku: PHP pro pokročilé - pracujeme s třídami a objekty

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Roman Pichlik

Datum vložení: 19.3.2004 8:15:28

1.)v clanku mate preklep viz. Kontruktor
2.) PHP nema konvecne pro pojmenovani trid resp. pro pouzivani malych a velkych pismen? Trida se jmenem clsZarovka me irituje, proc ne ClsZarovka aspon je pak na prvni pohled poznat co je konstruktor a co metoda objektu.

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 19.3.2004 12:36:40

Ano, aj nie :)

samostatne php ma snahu vytvarat mena v tvare moja_funkcia t.j. len male pismena a odelovac slov je '_'. istu vynimku tvoria "stare" funkcie ako strstr, ... (dost ma tiez ... ked niekde je StrStr, FOpen, ...)

Pear vyzaduje nazvy ako vacsina inych OOP jazykov:
Triedy -> MojaTrieda
funkcie -> mojaFunkcia()

Avatar

Autor komentáře: Michal Kubeček

Datum vložení: 19.3.2004 17:20:49

Už když jsem se s PHP setkal poprvé, dost mne šokovalo, jak může někdo vymyslet jazyk, který je v něčem case sensitive (např. identifikátory proměnných) a v něčem case insensitive (např. identifikátory funkcí).

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 19.3.2004 19:05:53

Ano je to divne. PHP preziva burlive zmeny a PHP5 bude uz nieco co bude mat viziu do buducnosti.

Cim som spoznal viac systemov, tym sa mi tazsie zaraduje php: nieje to ani lowend ani entreprise a ani nic medzi. V PHP zacinaju vznikat velmy nebezpecne veci (= zabijaci CPU) ako napr. smarty, jpgraph niektore casty PEARU....

Zda sa mi dost divne ked aplikacia travi 90% zivota niekde v skriptoch ktore sa len includuju.

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 19.3.2004 21:33:23

uprime co se vam zda spatneho na PEARu a Smarty??? oboje pouzivam a nevidim v tom zadny problem...

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 20.3.2004 14:28:15

Tu nejde o to ci sa mi to paci alebo nie. Zdasami velmy kontraproduktivne pouzivat kniznice ktore maju skoro megabajt!!! (je to celkom zabavne, ked si stiahnem malu php aplikaciu (taky user portal pre LDAP) a nusel som este postahovat cca 4MB hluposti. Vykon toho riesenie nebol bohvieco, stacilo mat cca 30 session a bolo to nepouzitelne. Profiler jasne ukazal ze problem bol prave napr v smarty a vrstve pre LDAP.)

PEAR pouzivam, ale napr. DataObjects su uz trochu mimo :). Uz by nemali byt napisane v php ale povedzme ze v C a rovno ako modul pre php, potom by to bolo podsttne lepsie.

Smarty nie, nepotrebujem sa ucit dalsi paskvil, uplne si vystacim s XSLT. Ked bude hotovy XSLT filter pre Apache 2 potom uz nebude nadcim rozmyslat.

Avatar

Autor komentáře: Jiří Kocman

Datum vložení: 21.3.2004 3:30:22

Je pravda že smarty jsou pěkný moloch. Ale půl mega nemají. Smarty, Config a Compiler class maji cca 160kB. Pak jsou pluginy, tere maji docela dost, ale vyuziji se jen ty, ktere jsou pro danou sablonu pouzite. Sam si uz praci bez smarty nemohu predstavit. Samozrejme nejsou jedinym template enginem, ale myslim ze svou flexibilitou jsou dokonale. Generovani slozitejsich stranek mi trva radove 50 tisicin (jsou tam jeste nejake sql dotazy, nekolik poli pro smarty v section...) a taky pouzivam vlastni db layer pro MySQL. Ten ma cca 43kB (pulka jsou komentare pro PHP documentator). Tahle trida mi pak usetri cca 80% bezneho kodu (napriklad volanim jedne metody ziskam z vysledku pole pouzitelne prave pro smarty a section v sablone, paging, order apod jsou samozrejmosti). Myslim ze pomer cena/vykon je v pripade smarty jednoznacny...

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 21.3.2004 14:40:38

to je pravda, treba sa snazit o maximalny reuse kodu. PHP5 a jeho objektovy model zjednodusi velmy vela veci.

PHP pouzivam ako preprocesor, ziadna velka logika, vsetko je len o vypisani dat :) cela logina je mimo php (DB, aplikacny server, ...). Kedze robim aplikacie ktore nebezia na kadejakych freeweboch nieje problem napisat vlastnu extenziu do php ktora zabezpeci pripojenie na aplikacny server, corba orb, ...

Avatar

Autor komentáře: ondra marek

Datum vložení: 22.3.2004 13:50:44

"a jeho objektovy model zjednodusi velmy vela veci. "

prosim vas - v cestine stejne jako ve slovenstine se velmi pise s mekkym i na konci

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 23.3.2004 18:50:08

myslim si ze tohle na tyto stranky naprosto nepatri a neni to ani moc vhodne clovek je bytost omylna a tim se od sebe kazdy odlisujeme tak si nekazme tu radost ze zivota :)

Avatar

Autor komentáře: Lukáš Kubásek

Datum vložení: 25.4.2004 14:53:11

Mne tedy taky prejde mraz po zadech, kdyz ctu diskusi a v kazdem prispevku tohoto pana vidim slovo "velmy"... omyl vypada trochu jinak...

Avatar

Autor komentáře: lukas

Datum vložení: 19.3.2004 10:40:20

infoclass(cls<B>t</B>rida);
asi by melo byt cls<B>T</B>rida :)

Avatar

Autor komentáře: lukas

Datum vložení: 19.3.2004 10:47:24

ty velky/maly pismenka ujizdej v celej posledni skupince funkci

Avatar

Autor komentáře: phpbeginner

Datum vložení: 19.3.2004 13:09:05

mam jednu otazku, ako vytvorim podobjekt resp. podtriedu nejakeho objektu/triedy. mam na mysli nieco ako $ziarovka->suciastky->objimka;
? Dakujem za odpoved.

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 19.3.2004 16:44:11

Automaticke dereferencovanie tried vie az php5

Musi si to rozdelit na:
$x = $zarovka->suciastky;
$y = $x->obijimka;

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 19.3.2004 16:46:26

Jaj....

class Zarovka {
var $suciastky;

function Zarovka() { $this->suciastky = new Suciatky() }
}

Avatar

Autor komentáře: Paranoicus Maximus

Datum vložení: 19.3.2004 13:36:39

Když v <I>instanci</I> třídy dojde k nějakému run-time erroru, PHP ohlásí chybu <I>v souboru definicí třídy</I>, hezky číslo řádku ... blablabla. Ale já bych chtěl vědět, které - například - volání metody tu chybu způsobilo. Je nějaké řešení?

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 19.3.2004 16:41:51

Vlastny error handler a funkcia debug_backtrace() su tvoji kamarati.

Avatar

Autor komentáře: Paranoicus Maximus

Datum vložení: 19.3.2004 16:45:43

Přesně toho jsem se bál. Ale i tak díky.

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 19.3.2004 21:29:23

toto pujde zjistit az v PHP5 za pomoci __METHOD__ teda pokud jsem vas dotaz spravne pochopil

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 19.3.2004 21:32:13

"Přímé volání funkce ve třídě" by se spise melo jmenovat "Statické volání funkcí" protoze trida::funkce() statickym volanim je a bude tomu tak i v PHP5 kde si uz budeme moci ve scriptu definovat ktere funkce maji staticke byt a ktere ne to same se tyka clenskych promenych

Avatar

Autor komentáře: Tomáš Klubal

Datum vložení: 24.3.2004 13:46:10

S tim se neda nez souhlasit. Myslim , ze neni spatne pouzivat terminologii , ktera uz je pouzivana v jinych objektovych jazycich. Stejne tak i standardy pro nazvy promenych, funkci trid ... .

Jeste bych chtel zduraznit, ze prestoze php neumoznuje (prozatim) rozlisit mezi privatnimi a public promenymi, rozhodne bych doporucoval vytvaret setter a getter metody pro vsechny promene ktere maji byt verejne. Zapouzdreni je jednou z nejvetsich vyhod objektu.

Avatar

Autor komentáře: zacatecnik

Datum vložení: 25.3.2004 8:51:44

V PHP teprve začínám a věci jako setter nebo getter mě nic neříkají. Článek, tak jak je, je vhodný nejen pro pokročilé (kteří si případné oficiální pojmenování jistě domyslí), ale i pro začátečníky.

Avatar

Autor komentáře: Michal Kubeček

Datum vložení: 25.3.2004 11:56:56

getter - metoda, která umožňuje získat obsah datového pole (obvykle getXYZ())
setter - metoda, která umožňuje nastavit obsah datového pole (obvyke setXYZ())

Ani jako začátečníkovi vám nic nebrání číst literaturu, dokumentaci a prohledávat web. Pokud se v článcích bude používat standardní terminologie, budete to hledání mít aspoň jednodušší.

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 25.3.2004 14:39:01

jeste priklad :)

function getPromena()
{
return $this->promena;
}

function setPromena($var)
{
$this->promena = $var;
}

Zpět na článek | Úvodní stránka Interval.cz