Door
Medina Wal
op 23-05-2016 16:01
gewijzigd op 23-05-2016 16:03
2.904 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.
in mijn editor (dreamweaver) krijg ik er is een syntaxis fout, en als ik de applicatie start, dan stopt hij gewoon. Toegegeven, ik ben zeer zwak in error afhandeling.
Werkelijk fantastisch, daar heb ik al een tijdje het net voor afgestruind en de oplossing ziet er eigenlijk veel simpeler uit, dan hoe ik erover aan het denken was...
Grote dank!!!
Wat ben je eigenlijk aan het doen, dat je in globale classvariabelen aan het schrijven bent maar er schijnbaar niets mee doet? Vreemd gebruik van self::$postLogin en self::$mailTemplate.
Hm, als function array dereferencing (FAD) niet werkt, dan is je PHP versie redelijk oud? In ieder geval < 5.4? Constructies van de vorm something()[2] worden pas vanaf 5.4 ondersteund.
Wat ben je eigenlijk aan het doen, dat je in globale classvariabelen aan het schrijven bent maar er schijnbaar niets mee doet? Vreemd gebruik van self::$postLogin en self::$mailTemplate.
Ach, zo vreemd is het nu ook weer niet, want zelfs Facebook gebruikt dergelijke utilities:
Ben, wat bedoel je precies met dat ik er schijnbaar niks mee doe?
In de Model roep ik dit veelvuldig aan, of is een andere manier misschien beter?
Sowieso lees ik op meerdere plekken dat het goed is/zou zijn om globale variabelen zoals $POST te hernoemen naar variabelen. Echter kon ik die dan niet aanroepen vanuit de model of als parameter doorgeven aan de model.
Dus hoe zou jij dat dan doen?
Ben bedoelt dat je niets meer doet dan variabelen kopiëren.
En kijk eens goed: je stopt een $request in de methode, maar daar doe je ook niets mee:
<?php
public static function getPost($request)
{
foreach ($_POST as $key => $value) {
self::$postLogin[$key] =$value;
}
unset($_POST);
$_POST = array();
return self::$postLogin;
}
?>
Verder vernietig je $_POST, waardoor die data elders niet meer te gebruiken is. Dat is in de praktijk vooral vervelend als je later ergens eens code van anderen wilt toevoegen. Je legt daarmee in een vroeg stadium een afhankelijkheid vast die later in de weg kan gaan zitten.