Portál AbcLinuxu, 27. října 2025 01:02
Může mi někdo prosím říct, že jsem idiot, že mám něco špatně? Pořád dostávám chybu
Catchable fatal error: Object of class FAV could not be converted to string in...Mám třídy
class FAV {
private $varFav;
public function __construct() { $this->varFav = 'blablabla'; $this->getVar(); }
private function getVar() { return $this->varFav; }
}
class Book {
private function getAutor() { .. code .. return $string; }
private function getYear() { .. code .. return $string; }
private function getFavo() { $obj = new FAV(); return $obj; }
private function getGenre() { .. code .. return $string; }
public function __toString() { return $this->getAutor().
$this->getYear().
$this->getFavo().
$this->getGenre(); }
}
$book = new Book();
echo $book;
Díky dík..
Řešení dotazu:
class FAV {
private $varFav;
public function __construct() { $this->varFav = 'blablabla'; }
private function getVar() { return $this->varFav; }
private function __toString() { return getVar(); }
}
Nebo takto ?
class FAV {
private $varFav;
public function __construct() { $this->varFav = 'blablabla'; }
private function __toString() { return varFav; }
}
Díky
class FAV {
private $varFav;
function __construct() {
$this->varFav = 'blablabla';
}
function __toString() {
return $this->varFav;
}
}
Ovšem pokud ten konstruktor nemá žádný parametr, úplně by stačila tato verze:
class FAV {
function __toString() {
return 'blablabla';
}
}
Taková třída by však nebyla moc užitečná.
Mělo by fungovat obojí, v obou případech tam však jsou chyby.Ať hledám jak hledám žádná rozdíl jsem tam nenašel, tak v čem jsem měl chyby? Použití private a public před metodama je špatně?
private function getFavo() {
$class = 'FAV';
if(class_exists($class, true)) {
$obj = new $class();
return $obj;
}
else {
throw new Exception('Chyba!');
}
}
Pořád mi to vrací chybu:
Fatal error: Method Book::__toString() must not throw an exception in...a nevím jak to mám jinak kontrolovat... Děkuji ještě za pomoc..
private function getFavo() {
$class = 'FAV';
return new $class();
}
Mně zase hlava nebere, k čemu vlastně potřebuješ tu hromadu zbytečných get...(). Gettery se přece nedělají, protože porušují zapouzření objektů.Jako tohle je špatně?
private function getAutor() { .. }
private function getYear() { .. }
private function getFavo() { .. }
private function getGenre() { .. }
pokud ano, tak jak mají být pojmenovány ty metody?
Vzor Factory sice používám, ale místo testování existence třídy zachytávám fatální chyby.A prozradíš jak na to? Díky
{return $this->author;} ?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.