Nette\Object napsání metody __toString
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Cars Tomas
- Člen | 43
Ahoj,
mám objekt, který je potomkem Nette\Object. Dodělal jsem si k němu metodu
__toString, abych mohl s jeho string reprezentací pracovat v databázi.
Problém mi navstal, když jsem to takto použil:
<?php
/** @var Nette\Database\Context */
protected $db;
//////////
// $phone je typu MyPhone
$row = $this->getAll()->where("phone LIKE", $phone);
// vygenerovany dotaz: "SELECT `id` FROM `partners` WHERE (`phone` LIKE +420 251002111)" ==> SPATNE
$row = $this->getAll()->where("phone LIKE", (string)$phone);
// vygenerovany dotaz: "SELECT `id` FROM `partners` WHERE (`phone` LIKE '+420 251002111')" ==> DOBRE
/////////
?>
Poradím mi prosím někdo jak ten __toString napsat aby nebyla potřeba toho natypování (string), nebo se bez toho prostě nedá obejít?
Děkuji
Editoval Cars Tomas (7. 1. 2015 17:30)
- Cars Tomas
- Člen | 43
Aha. Mě právě zmátlo to, že když použiju takto proměnnou typu
DateTime tak to bylo zaobalené v pořádku, myslel jsem teda že dělám chybu
já.
Každopádně dík.
- Filip Procházka
- Moderator | 4668
Na datetime je tam imho speciální podmínka, která i formátuje datum a čas do správného formátu pro databázi, proto to s tím funguje dobře :)