Autor | Zpráva | ||
---|---|---|---|
whysper93 Profil |
#1 · Zasláno: 28. 5. 2010, 08:52:13
Ahoj mám jenom takovou malou otázku. Jaký je rozdíl, když použiji:
class cTrida{ public $text = ""; function __construct($text) { $this->text = $text; } } A když použiji pro konstruktor funkci se stejným jménem jako je jméno třídy? class cTrida{ public $text = ""; function cTrida($text) { $this->text = $text; } } Ptám se jen tak ze zajímavosti začínám s OOP v PHP a narazil jsem na to. Tak díky za odpovědi. |
||
__construct Profil |
#2 · Zasláno: 28. 5. 2010, 08:59:32 · Upravil/a: __construct
Metóda (nie funkcia) s rovnakým názvom ako trieda je konštruktor v PHP 4 , __construct je konštruktor v PHP 5 .. Kvôli spätnej kompatibilite s aplikáciami pre PHP 4 sa to dá použiť aj vo verzii 5 ale pokiaľ máš triedu ktorá obsahuje obe tieto metódy tak ako konštruktor sa považuje iba ten s syntaxou v. 5 (pokiaľ máš PHP5 - predpokladám, že áno)
Každopádne vo funkčnosti v tom rozdiel nie je (stále hovorím o PHP 5) - niektorí čo programujú napr.v Java tak zo zvyku používajú ako konštruktor názov triedy |
||
whysper93 Profil |
#3 · Zasláno: 28. 5. 2010, 09:41:41
Díky za rychlou odpověď. Omlouvám se za ty funkce je to síla zvyku nazývat to tak :D Časem si možná zvyknu na metody. Z tvého příspěvku vyplívá ještě jedna otázka:
Můžu tedy pro zajištění funkčnosti i v nižších verzích PHP použít oba zápisy? Jakože úplně stejné dvé metody ale jednu se stejným názvem jako je název třídy a druhou s názvem __construct? Nebo je tedy lepší používat jen metodu se stejným názvem jako je název třídy aby to fungovalo i v nižších verzích? |
||
__construct Profil |
#4 · Zasláno: 28. 5. 2010, 09:46:16 · Upravil/a: __construct
V tom prípade je lepšie používať ako konštruktor názov triedy (robia to tak aj niektoré frameworky) .. Nevidím dôvod mať triedu s dvoma totožnými metódami s iným názvom ..
|
||
Nox Profil |
#5 · Zasláno: 28. 5. 2010, 10:40:37
whysper93:
Podle mě ne 1) A to hlavně -> podpora OOP je v PHP4 velmi slabá. Pokud bys udělal jen tento ústupek, je to k ničemu. Takže bys musel psát podle PHP4 a to je na nic obzvlášť v kombinaci s: 2) PHP4 z hostingů podle mě už téměř úplně vymizelo |
||
Majkl578 Profil |
#6 · Zasláno: 28. 5. 2010, 19:33:26 · Upravil/a: Majkl578
Pouze __construct, konstruktor podle názvu třídy nepoužívat.
PHP 4 je od 7. srpna 2008 nepodporované, a proto nemá cenu brát na něj jakékoliv ohledy. Pokud hosting nabízí pouze PHP 4, doporučuji co nejrychleji najít nový. |
||
whysper93 Profil |
#7 · Zasláno: 28. 5. 2010, 22:05:06
Dobře díky všem za odpovědi.
|
||
joe Profil |
#8 · Zasláno: 29. 5. 2010, 14:22:51
Funkce nebo metoda, je to jedno, hlavně když každý ví o co se jedná. V PHP bych to nazýval funkcí, je to uvozené slovem "function".
|
||
Majkl578 Profil |
#9 · Zasláno: 29. 5. 2010, 15:54:59
joe:
Ale správně je to metoda, překlad „method“. |
||
joe Profil |
#10 · Zasláno: 29. 5. 2010, 22:28:16
(OT)
Majkl578: Můžu se zeptat proč? Protože PHP je OOP? Zase není čistě OOP, jako třeba Java. Jinak pěkné, že jsi přeložil slovo "metoda" do angličtiny :-) ale pořád je to uvozené slovem "function", potože v PHP prostě vždycky byly jen funkce, ale pro mě za mě, ať si tomu každý říká jak chce :-) Ale jinak jo, správně se tomu ve třídě říká metoda. |
||
Alphard Profil |
#11 · Zasláno: 29. 5. 2010, 22:35:02
joe:
Protože se teď bavíme o OOP. Třída, je základním pojmem klasifikace, při návrhu uspořádáváte informace do smusluplné entity. Základním pojmem je objekt. Objekt si „pamatuje“ svůj stav (v podobě dat čili atributů) a poskytuje rozhraní operací, aby se s ním mohlo pracovat (nazývané metody). To jsem vzal z wikipedie , ze článku obecně o OOP. Je to zavedená terminologie bez ohledu na to, jak se metody v daném jazyce definují. |
||
Timy Profil |
#12 · Zasláno: 29. 5. 2010, 22:39:56
joe:
„ale pořád je to uvozené slovem "function"“ Ne všechno co má bradavici je Paroubek. |
||
__construct Profil |
#13 · Zasláno: 29. 5. 2010, 23:46:10
joe:
„Zase není čistě OOP, jako třeba Java.“ Ako príklad OO jazyka a zrovna v súvislosti s metódami by som rozhodne neuvádzal Javu - nepodporuje plnohodnotný model predávania správ jednotlivým objektom ako napr. Smalltalk, Ruby alebo Objective C. tak ako ho definoval pán Alan Curtis Kay. Java je podobne ako PHP iba hybridný jazyk, ktorý objektový model implementuje len čiastočne |
||
Majkl578 Profil |
#14 · Zasláno: 30. 5. 2010, 16:44:36
joe:
„Jinak pěkné, že jsi přeložil slovo "metoda" do angličtiny :-)“ Spíš opačně, z angličtiny. Řekl bych k tomu víc, ale Alphard mě předstihl. :) |
||
joe Profil |
#15 · Zasláno: 30. 5. 2010, 16:53:29
(OT - poslední odpověď, nemám čas na to se tu dohadovat o věcech, které nejsou nijak podstatné)
Majkl578: „Spíš opačně, z angličtiny.“ „Ale správně je to metoda, překlad ‚method‘.“ Ne. Z češtiny do angličtiny, tak jak jsi to napsal. Alphard: Ještě neznamená, že pokud něco používá většina, že to tak pro každého musí platit :) (mimochodem, Wikipedie "prý" není dobrým zdrojem informací, aspoň to všude slýchávám). __construct: Java je určitě víc objektová než PHP... |
||
SpotRudloff Profil |
#16 · Zasláno: 30. 5. 2010, 16:54:27
joe:
Java má ale hrozné podmínky pro OOP - uděláš chybu a končíš. |
||
Nox Profil |
#17 · Zasláno: 30. 5. 2010, 18:03:37
Javu neznám ... co znamená končíš? Že to končí s chybou? Pokud's to tak myslel - to je ale nejlepší možná situace ... nějaké tiché přecházení chyb dává za vznik chybám, které se mohou projevit jen někdy a jindy a z mnoha dalších důvodů by to bylo špatné
|
||
SpotRudloff Profil |
#18 · Zasláno: 30. 5. 2010, 18:13:20
Nox:
No končíš v tom smyslu že pokud máš dlouhý kód a máš tam chybu, tak Java má hrozné odůvodnění chyb. Navíc Java má hroznou práci s poli. |
||
__construct Profil |
#19 · Zasláno: 30. 5. 2010, 18:27:48 · Upravil/a: __construct
SpotRudloff:
„Java má hrozné odůvodnění chyb. Navíc Java má hroznou práci s poli.“ ..navyše je pomalá atď, atď. Každý jazyk má svoje muchy S tým „končíš“ rozhodne nesúhlasím - každý program funguje tak ako ho naprogramuješ, takže pokiaľ nevieš používať výnimky tak v každom programovacom jazyku pri chybe „končíš“ .. |
||
joe Profil |
#20 · Zasláno: 30. 5. 2010, 19:00:10
SpotRudloff:
„No končíš v tom smyslu že pokud máš dlouhý kód a máš tam chybu, tak Java má hrozné odůvodnění chyb. Navíc Java má hroznou práci s poli.“ Tak je to skoro všude. Třeba i u C#. Prostě se ti vypíše, čím vším procházela vyjímka. To, že uděláš chybu a nezachytíš vyjímku, kterou bys měl, tak opravdu končíš v tom smyslu, že se dostaneš až někam do Thread třeba... |
||
Časová prodleva: 14 let
|
0