Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 20. 12. 2014, 19:02:28
Jaký je prosím rozdíl mezi
$date_a a $date_b ?
$str = "2006-05-18"; $date_a = date_create($str); $date_b = strtotime($str); |
||
pcmanik Profil |
quatzael:
date_create je alias pre konštruktor triedy DateTime, čo by si mimochodom zistil, keby si sa pozrel do dokumentácie. Pričom date_create vracia objekt a strtotime vracia timestamp. |
||
quatzael Profil |
#3 · Zasláno: 20. 12. 2014, 19:08:05 · Upravil/a: quatzael
pcmanik:
A timestamp není objekt? Btw, do dokumentace jsem se díval, ale nechápu to.. |
||
pcmanik Profil |
#4 · Zasláno: 20. 12. 2014, 19:20:50
quatzael:
Timestamp je int. DateTime je novšie objektové rozhranie na prácu s dátumom a časom, prečo vytvorili aj neobjektový prístup netuším. |
||
DJ Miky Profil |
#5 · Zasláno: 20. 12. 2014, 20:18:14
pcmanik:
„prečo vytvorili aj neobjektový prístup netuším“ Sám sis odpověděl: Protože „neobjektový“ přístup vznikl mnohem dříve. DateTime je k dispozici až od PHP 5.2, strtotime a podobné funkce už byly obsaženy v PHP 4, tedy v době, kdy byl objektový návrh PHP ještě v plenkách.
|
||
juriad Profil |
#6 · Zasláno: 20. 12. 2014, 20:26:20
DJ Miky:
Otázka byla, proč vznikla funkce date_create, která se používá procedurálním stylem. (A další funkce ze stejné rodiny: http://php.net/manual/en/ref.datetime.php). Podle mě chtěli nechat uživatele, aby používali to, co se jim víc líbí. Osobně s tím nesouhlasím (stejně jako se jmennou (ne)konvencí PHP), ale jediné, co můžu dělat je procedurální API třídy DateTime nepoužívat. |
||
DJ Miky Profil |
#7 · Zasláno: 20. 12. 2014, 20:33:07
Aha, omlouvám se, špatně jsem pochopil otázku. Není to jen u DateTime, některé další knihovny také nabízí jak čistě objektový, tak procedurální způsob práce. Oficiální důvod také neznám, ale domnívám se, že to může být dáno i rozdílnou složitostí zápisu. Procedurální způsob je přeci jen jednodušší na napsání (tím také nechci tvrdit, že se mi líbí) a např. předat samostatnou funkci jako callback nějaké mapovací funkci (např.
array_map ) znamená méně psaní, než totéž provést s metodami objektů.
|
||
pcmanik Profil |
#8 · Zasláno: 20. 12. 2014, 20:34:43
DJ Miky:
Ťažko povedať... Skôr mi to príde ako také prechodové obdobie. Napr. PDO už neobjektový prístup ani nemá, čo je podľa mňa len dobre. |
||
xROAL Profil |
#9 · Zasláno: 20. 12. 2014, 21:16:29
pcmanik:
„Napr. PDO už neobjektový prístup ani nemá, čo je podľa mňa len dobre.“ PDO niekedy aj malo procedurálny prístup? Čo si pamätám, tak len mysqli, a aj toho sa pomaly začínajú zbavovať a ponechávajú ho čisto objektové. Procedurálne funkcie mysqli_ už sú označené ako deprecated.
Ale inak si tiež myslím, že tento dvojitý prístup bol (a z časti ešte pretrváva) kvôli tomuto akémusi "prechodnému obdobiu". |
||
pcmanik Profil |
#10 · Zasláno: 20. 12. 2014, 21:27:06
xROAL:
Nie nemalo, zle som sa vyjadril. Odkiaľ máš že procedurálne funkcie mysqli su označené ako deprecated? V dokumentácii sa mi nepodarilo nič nájsť. Pokiaľ viem len rozhranie mysql je celé označené ako deprecated. |
||
xROAL Profil |
pcmanik:
„Odkiaľ máš že procedurálne funkcie mysqli su označené ako deprecated?“ Možno som sa unáhlil a nie všetky sú tak označené. Každopádne v dokumentácii sú mysqli_ funkcie pod nadpisom "Aliases and deprecated Mysqli Functions". Zrejme len niektoré, a nie všetky ako som sa domnieval, sú už označené ako deprecated.
Edit: Ako si to teraz všímam tak skutočne tam nie sú všetky, takže som asi len zle pochopil to, na čo som v dokumentácii narazil. |
||
Časová prodleva: 9 let
|
0