Portál AbcLinuxu, 13. listopadu 2025 17:55
throw new Exception('Chybové hlášení');
class Forms{
private $input = array();
private $textarea = array();
private $layout;
public function __construct(){
try{
$this->getInput();
$this->getTextarea();
$this->getButton();
$this->setLayout();
}catch (PDOException $e){
$this->setLayout();
}
}
private function getInput(){
if($a === true) //Vyvoláme chybu
throw new Exception('Chyba!');
}
private function getTextarea(){}
private function getButton(){}
private function setLayout(){
$this->layout = $input[0].
$input[1].
$input[2].
$textarea[0].
$textarea[1];
}
public function __toString(){
return $this->layout();
}
}
$forms = new Forms();
echo $forms;
$this->layout pokud nektera z metod vyhodi vyjimku..
private $input = array(); private $textarea = array(); // v konstruktoru $this->getInput();Zřejmě metodou
getInput() plníš pole $input. Jenže to tak být nemusí. Co třeba takto?
private $input; private $textarea; // v konstruktoru $input = new Input();a v metodě
__toString() ty dva objekty spojíš do jednoho stringu.
$this->layout vůbec neměla existovat. Přece se i v OOP dělá normalizace. Nebo snad ne?
1. ano, závorky tam nepatří, čili to má být takto $this->layout; 2. no to jsou pole, ne proměnné 3. ano, vypadl řádek $a = true;
class Forms {
private $input = array();
private $textarea = array();
public function __construct(){
try {
$this->getInput();
$this->getTextarea();
$this->getButton();
} catch (PDOException $e){
$input = array();
$textarea = array();
}
}
private function getInput() {
if($a === true) //Vyvoláme chybu
throw new Exception('Chyba!');
}
private function getTextarea() {}
private function getButton() {}
public function __toString(){
return implode('', $this->input) .
implode('', $this->textarea);
}
}
$forms = new Forms();
echo $forms;
//if($a === true) //Vyvoláme chybuabych vyvolal chybu kterou odchytím a pokračuji dál dle nastaveni, tak dostávam chybu:
Fatal error: Uncaught exception 'Exception' with message 'Chyba!'Proč? Díky
Exception, ale zachytáváš PDOException. Pokud tu předponu "PDO" vyhodíš, bude to fungovat.
hm, hm..
} catch (PDOException $e){
napiš jen
} catch (Exception $e){
Takovou kravinu sis mohl klidně opravit sám. Měl jsi to tak chybně v originále a pouze jsem to přehlédl.
public function __construct(){
try{
$this->getInput();
$this->getTextarea();
$this->getButton();
$this->setLayout();
}catch (PDOException $e){
$this->setLayout();
}
}
myslel tim, ze misto zachytavani PDOException tam mas mit obecnou Exception, takze tim zachytis jakoukoliv vyjimku, ne jen vyjimky ktere jsou instancemi PDOException
protože do atributů objektu se dávají jen atomické a strukturované údaje, nikoli agregáty.Můžeš mi prosím tohle objasnit?
try {
..
} catch (Exception $e){
..
}
a volání metod patří do __toString() ?
try {
echo $a; // tohle by mělo vyhodit chybu, že není inicializovaná prom. $a
} catch (Exception $e){
echo "$e"; // a zprávu o té chybě bych chtěl dostat sem
}
A pak už bych byl velký frajem a změnil bych si i NICK
isset($a).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.