Nejste přihlášen(a)
PHP 5.3, Dibi 1.3-dev (revision 13aa8b2 released on 2010–04–06)
Narazil jsem na to, že při automatické detekci typů ve výsledcích (BTW móc pěkné :) a jejich nastavení jako výchozí hodnoty pro formulář v Nette (se kterým to možná až tak nesouvisí), se objevila chyba která tvrdí, že objekt třídy DateTime53 nelze převést na řetězec.
Díval jsem se do zdrojáku inkriminované třídy (v dibi/Nette/DateTime53.php) a následně i do dokumentace třídy DateTime, od které je DateTime53 poděděná a přišel jsem na to, že problém spočívá v tom, že ani DateTime53, ani DateTime nikde nedefinuje metodu __toString().
Mým (možná poněkud účelovým ale funkčním) řešením je prosté doplnění metody __toString(), přibližně takto:
<?php
public function __toString()
{
return $this->format('Y-m-d H:i:s');
}
?>
Je to dobré řešení? Mohl by to někdo (David? :) opravit v distribučním dibi?
Díky
I come to see with eyes uncloaded by hate.
DateTime53 je jen fixem třídy DateTime pro PHP 5.2, funkcionalitu by
rozšiřovat neměl. Tudíž přidávat nové metody vyloženě nechci. Také je
otázka, do jakého formátu se vlastně má datum převádět. Vhodnější
tedy bude volat ->format('Y-m-d H:i:s') namísto převodu na
řetězec.
David Grudl napsal(a):
DateTime53 je jen fixem třídy DateTime pro PHP 5.2, funkcionalitu by rozšiřovat neměl. Tudíž přidávat nové metody vyloženě nechci. Také je otázka, do jakého formátu se vlastně má datum převádět. Vhodnější tedy bude volat
->format('Y-m-d H:i:s')namísto převodu na řetězec.
Ahoj David
Chcel by som sa spýtať otázku práve ohľadom DateTime53.
Ak zavolám na výsledku klasické nastavenie hodnoty vráteného
stĺpca cez
<?php
$result->setType('delivery_transportation_time', dibi::FIELD_DATETIME, 'H:i');
?>
Pri pokuse definovať navrátenú hodnotu ako konštantu, alebo vypísať klasicky cez echo:
<?php
define('DELIVERY_TRANSPORTATION_TIME', $row->delivery_transportation_time);
echo $row->delivery_transportation_time;
?>
Dostanem nasledovné chyby a varovania:
Ako riešiť tento problém v novších verziách DiBi ? Vážne nebude potreba definovať tú spomínanú metódu ?
(DiBi 1.3-dev 26.5.2010, PHP 5.3)
Díky
Editoval jardo (5. 7. 2010 20:51)
DateTime má metodu format pomocí které si můžeš datum převést do libovolného textového formátu a pak třeba uložit do konstanty.
David Grudl napsal(a):
DateTime má metodu format pomocí které si můžeš datum převést do libovolného textového formátu a pak třeba uložit do konstanty.
To teda ale znamená prekopanie všetkých zdrojákov, kde sa to používa … :(