ho derivato una classe da Exception
, in fondo in questo modo:accesso variabile privata dalla funzione membro in PHP
class MyException extends Exception {
private $_type;
public function type() {
return $this->_type; //line 74
}
public function __toString() {
include "sometemplate.php";
return "";
}
}
Poi, ho derivato da MyException
in questo modo:
class SpecialException extends MyException {
private $_type = "superspecial";
}
Se throw new SpecialException("bla")
da una funzione, rilevala e vai a echo $e
, quindi la funzione __toString
dovrebbe caricare un modello, visualizzarlo e quindi non restituire effettivamente alcunché all'eco.
Questo è fondamentalmente ciò che è nel file di modello
<div class="<?php echo $this->type(); ?>class">
<p> <?php echo $this->message; ?> </p>
</div>
nella mia mente, questo dovrebbe sicuramente lavorare. Tuttavia, ottengo il seguente errore quando viene generata un'eccezione e cerco di visualizzarlo:
Fatal error: Impossibile accedere proprietà privata SpecialException :: $ _ tipo in C: \ percorso \ to \ eccezioni. php on line
qualcuno può spiegare perché sto infrangendo le regole qui? Sto facendo qualcosa di orribilmente spiritoso con questo codice? C'è un modo molto più idiomatico per gestire questa situazione? Il punto della variabile $_type
è (come mostrato) che desidero utilizzare una classe div diversa a seconda del tipo di eccezione rilevata.
Come ho scritto laggiù: E 'molto molto molto brutto per lasciare __toString() restituisce una stringa vuota. Non riesco davvero a vedere QUALSIASI caso per queste cose. – tuergeist
Il ritorno vuoto di __toString() per un'eccezione è ancora più dubbio. – tuergeist