[Feature] Magic methode om object naar integer te casten
Gewijzigd op 20/06/2016 09:56:41 door - Ariën -
* De medewerkers van dit forum hebben geen zeggenschap over de werking van PHP :). Dit is een community-site voor het uitwisselen van informatie / het stellen van vragen over PHP. Dit is een gebruikersplatform.
* De rubriek "bugs & feature request" betreft specifiek bugs en feature requests van het forum zelf. Dit gaat niet over de intrinsieke werking van PHP.
Dat gezegd hebbende. Waarom zou je een object willen introduceren voor een integer? Integer is al een type in (o.a.) PHP. Daarnaast is PHP redelijk type agnostisch en voert zelf conversies uit indien dit nodig is. Of handmatig/expliciet via een typecast middels (int) $var. En tot slot is PHP een hybride taal, zodat je ... eh... *kuch* "the best of both worlds" hebt :). Je kunt je integers ook gewoon integers laten zijn?
Omdat ik graag van een integer wil kunnen overerven. Ik maak gebruik van value objects, die controles uitvoeren op het moment dat je ze aanmaakt. Dus dat ik alleen maar in de constructor van dit object de is_numeric() hoef aan te roepen. En in de childClass Afstand alleen maar de isValid() methode hoef te overschrijven met een check of deze waarde boven de 0 is, en een __toString methode waarin de meters automatisch naar km en m omgerekend wordt. En om de snelheid te berekenen wil ik dan gewoon dit Afstand object kunnen delen door een Tijd object.
Deze numerieke grootheden lijken mij meer eigenschappen van een (ander?) object (dit puzzelstuk ontbreekt mogelijk nog)?
Natuurlijk is het belangrijk om input te filteren (te controleren of je daadwerkelijk met numerieke waarden van doen hebt), maar dat wil niet zeggen dat je hiervoor allemaal objecten nodig hebt? PHP is geen OOP taal pur sang.
De methode __toString() voldoet daarbij echter prima, omdat de value objects uiteindelijk toch in een string belanden voor SQL. De waarden op zich hebben weinig betekenis; je moet ze in de ruimere context van SQL zien.
Voor een afstand zou ik echter geen child van een integer gebruiken: dat is spatial data en die kun je vaak beter anders modelleren. Een afstand is op zich namelijk ook niets, maar iets dat wordt bepaald door een beginpunt, een eindpunt en de rechte lijn of polygoon die beide punten verbindt.
Thomas van den Heuvel op 10/06/2016 11:07:31:
Je bericht staat om meerdere redenen op de verkeerde plaats:
* De medewerkers van dit forum hebben geen zeggenschap over de werking van PHP :). Dit is een community-site voor het uitwisselen van informatie / het stellen van vragen over PHP. Dit is een gebruikersplatform.
* De rubriek "bugs & feature request" betreft specifiek bugs en feature requests van het forum zelf. Dit gaat niet over de intrinsieke werking van PHP.
* De medewerkers van dit forum hebben geen zeggenschap over de werking van PHP :). Dit is een community-site voor het uitwisselen van informatie / het stellen van vragen over PHP. Dit is een gebruikersplatform.
* De rubriek "bugs & feature request" betreft specifiek bugs en feature requests van het forum zelf. Dit gaat niet over de intrinsieke werking van PHP.
We stellen het zeer op prijs als je in het vervolg een bericht naar het moderatie-meldpunt zou kunnen sturen.
Anyway, dit topic is nu verhuisd naar de juiste plek.
Uiteindelijk telt wat je hebt gemaakt het meest, niet zozeer het technische hoe.