Hey guys,

Een vraagje...

Ik heb een aantal verschillende exception classes die een abstracte parent class extenden.

Nu wil ik dat iedere exception (child) class een description krijgt, waarin ik een korte uitleg geef over wat de exception inhoudt. Het gaat dus niet om de foutmelding zelf, maar om een uitleg waarin staat in welke situatie de betreffende exception wordt gegooid.

Nu wil ik er dus voor zorgen dat iedere child class zo'n description heeft. De meeste gebruikelijke oplossing is (denk ik) in de parent class een abstracte getDescription method opnemen, die ik dan in alle child classes moet implementeren.

Omdat deze getDescription method enkel een string zou teruggeven, vind ik het een beetje "overkill". In iedere class dezelfde method opnemen, met als enige verschil de inhoud van de string... is dat niet een beetje teveel van het goede vraag ik me af?

Wat ik me nu afvraag is wat jullie van het idee vinden om de tekst gewoon in een private class property te zetten, en dat alleen de abstracte class een getDescription method heeft, die die property teruggeeft?

Dus in plaats van dit:

<?php

class SomeException extends AbstractException {

// Return the description.
public function getDescription() {
return 'bla die bla bla bla';
}

}

?>
Zou je dan dit krijgen:

<?php

class SomeException extends AbstractException {

private $description = 'bla die bla bla bla';

}

?>
Wat vinden jullie?
Hoe kan een method van een andere klasse toegang krijgen tot een private property?

En wat is nu het verschil tussen een method die een string teruggeeft en een property die een string bevat? Naar mijn mening is dat het verschil tussen appels en appels.

Bij het gebruiken van een method weet je meteen na het bekijken van iedere exception hoe je de description kan verkrijgen, bij een property blijft het altijd gissen (behalve als het public is).
Volgens mij wil Ozzie geen property van de fout terughebben, maar een property van de class zelf, die beschrijft wat de aard van de exception is. Dat is dus veel eerder een class constant dan een object property.

>> Het gaat dus niet om de foutmelding zelf, maar om een uitleg waarin staat in welke situatie de betreffende exception wordt gegooid.

Ik vind dat een documentatie-vraagstuk, geen programmeer-probleem. Je gaat anders namelijk een variant van een parse error inbouwen enkel en alleen omdat er uitleg over de exception ontbreekt.
Wouter J op 22/05/2014 16:27:46

En wat is nu het verschil tussen een method die een string teruggeeft en een property die een string bevat? Naar mijn mening is dat het verschil tussen appels en appels.

Dat je die method moet schrijven misschien?
@Wouter:

>> Hoe kan een method van een andere klasse toegang krijgen tot een private property?

Oeps... je hebt gelijk.. dat moest een protected property zijn. Excuus...

Ger van Steenderen op 22/05/2014 17:13:06

[quote="Wouter J op 22/05/2014 16:27:46"]
En wat is nu het verschil tussen een method die een string teruggeeft en een property die een string bevat? Naar mijn mening is dat het verschil tussen appels en appels.

Dat je die method moet schrijven misschien?

[/quote]
Correct... je moet dus in iedere exception class zo'n method gaan schrijven. Als ik het in een property stop, dan is dat veel makkelijker. Maar mijn vraag is of dat "oké" is, of dat ik toch beter een method kan gebruiken?

Reageren