Door
Medina Wal
op 23-05-2016 16:01
gewijzigd op 23-05-2016 16:03
2.903 views
Hallo,
ik ben bezig met een mvc site, en maak hierin gebruik van static methodes en properties.
In de control heb ik deze code staan:
public static function getPost($request) {
foreach ($_POST as $key => $value) {
self::$postLogin[$key] =$value;
}
unset($_POST);
$_POST = array();
return self::$postLogin;
}
om de post input te hernoemen naar static properties en
public static function getMailTemplate($aanhef, $achternaam, $bericht) {
ob_start();
include ('view/mailTemplate.html');
self::$mailTemplate = ob_get_contents();
ob_end_clean();
return self::$mailTemplate;
}
nu lukt het zonder problemen om overal vandaan de static methode ControlClass::getMailTemplate(),
maar ik krijg foutmeldingen wanneer ik in een andere class bijvoorbeeld de static propertie ControlClass::getPost()[naam] wil aanroepen.
Kan iemand me uitleggen hoe dit zit?
Grote dank valt u alvast ten dele.
Dit stukje code heb ik gedeeltelijk gekopieerd en ik ging er eigenlijk vanuit dat de request nodig is voor de parameter in ControlClass::getPost()[naam], maar goed nu ik het beter lees, zie ik dat er ook niet meer naar gerefereerd wordt, stom dus.
En over $_POST heb ik dit gelezen.
Ik vroeg mezelf dit af en ben daarom erg gevoelig gebleken voor deze manier van aanpak.
Ik heb mij trouwens alleen gehouden aan het basis-principe, verder moet ik het nog uitzoeken.
Ik ben nu wel enigszins verward, wat is nu de betere manier?
Maar die aanpak zegt niets over het vernietigen van $_POST, dat is ook iets dat je beter niet kunt doen. Het is wel waar dat het binnen frameworks netjes kan zijn om requests te abstraheren, maar dit voelt niet als de juiste manier. Je kunt een Request object maken, waarin je alle facetten van de requests opneemt (GET, POST, URL's, headers, file uploads, de hele zooi). Dan heb je alsnog alle elementen op één plaats.
@Ward: de methode zelf is opzich niet eens zo verkeerd, wat er in de methode gebeurt wel.
Deze regel
<?php
self::$postLogin[$key] =$value;
?>
in combinatie met deze
<?php
return self::$postLogin;
?>
Is ontzettend vreemd, zou je ook niet zeggen? Als dit een lokale variabele was was het iets logischer, of zoals het nu gebruikt wordt gewoon return $_POST, dat zou de code ook nog wat leesbaarder maken.
Ok, ik ben echt veel wijzer geworden en enorm geholpen, bedankt.
De manier om de complete request te abstraheren die daar beschreven staat is wel wat teveel voor de praktische toepassing die ik nodig heb, maar het is wel erg leerzaam en ik ga er ook zeker meer over lezen.