Waarom de volgende dingen?quote:Op vrijdag 20 november 2009 12:43 schreef hamkaastosti het volgende:
ik ben nog steeds bezig met m'n MVC systeempje en nu vroeg ik me af of ik sommige dingen compleet verkeerd aanpak dus hieronder wat code van een controller en een model.
mijn newscontroller: http://pastebin.com/d7cfa2981
mijn newsmodel: http://pastebin.com/m47be5495
Welke ervaren php'er kan me wat goede tips geven?
1 2 3 4 5 6 7 8 | $this->view->addContent($this->controller, __FUNCTION__); final class newscontroller extends basecontroller { private $controller = 'news'; } ?> |
1 2 3 4 | $this->newsitems = array(); $this->singleitem = array(); ?> |
dus die addContent methode kan 1 niveau hoger worden geplaatst, eigenlijk na de call van de controller functiequote:Op vrijdag 20 november 2009 13:15 schreef hamkaastosti het volgende:
$this->view->addContent haalt de view op uit modules/controllernaam/methodnaam.tpl.php en voegt dit toe op de juiste locatie in layout.tpl.php. zo voegt $this->view->addUserError('newsitem_not_found'); bijvoorbeeld de geselecteerde foutmelding toe aan de layout.
hij haalt het op en voegt het vervolgens toe aan de algehele layoutquote:Op vrijdag 20 november 2009 14:23 schreef Xcalibur het volgende:
Los van je vraag vind ik 'AddContent' een wat verwarrende naam voor iets wat content ophaalt
wat dacht je van getContent? doet precies wat hij zegt haalt content opquote:Op vrijdag 20 november 2009 17:21 schreef hamkaastosti het volgende:
[..]
hij haalt het op en voegt het vervolgens toe aan de algehele layout
ik ben niet zo goed met naamgevingen
Ik wil dis het deel tot de EERSTE </td> hebben. Ik heb dit al geprobeerd maar dat werkt uiteraard niet:quote:bla<br>bla<div></td>blabla
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | public function react() { //form is submitted if(strtoupper($_SERVER['REQUEST_METHOD']) == "POST" && !empty($_POST['submit'])) { $validator = new validator(); $validator->validateField('name', 3, 45, '/^[aA-zZ0-9]+$/', true); $validator->validateMail('email', true); //form is valid if($validator->isValid()) { echo 'valide'; // hier moet ik dan ook nog een keer checken of nieuwsitem wel bestaat. // kan ik ook in het model doen maar wat is beter? } //form not valid. display it again with errors else { //not existing item $newsitem = $this->model->getSingleItem($this->path->getPiece(3)); if($newsitem == false) { $this->view->addUserError('newsitem_not_found'); } //it exists. else { $this->view->newsitem = $newsitem; $this->view->errors = $validator->getErrors(); $this->view->postvars = $validator->getPostVars(); $this->view->addContent($this->controller, __FUNCTION__); } } } //show the reactionform else { $newsitem = $this->model->getSingleItem($this->path->getPiece(3)); //not existing item if($newsitem == false) { $this->view->addUserError('newsitem_not_found'); } //it exists. else { $this->view->newsitem = $newsitem; $this->view->addContent($this->controller, __FUNCTION__); } } } ?> |
Als je een ? achter het sterretje plaatst zou het moeten werken. Da's het verschil tussen greedy en lazy binnen regular expressions.quote:Op vrijdag 20 november 2009 20:32 schreef PiRANiA het volgende:
Er is geen regex-topic, maar ik denk dat de PHP bazen hier mij wel kunnen helpen:
Ik wil een stuk tekst matchen tót een bepaald punt:
[..]
Ik wil dis het deel tot de EERSTE </td> hebben. Ik heb dit al geprobeerd maar dat werkt uiteraard niet:
[ code verwijderd ]
dan zoekt hij namelijk niet de eerste </td>, maar de laatste </td>
Anyone?
Werktquote:Op vrijdag 20 november 2009 20:38 schreef Sirolf het volgende:
[..]
Als je een ? achter het sterretje plaatst zou het moeten werken. Da's het verschil tussen greedy en lazy binnen regular expressions.
True, standaard zijn dingen als * en + in regular expressions allemaal greedy. Met de /U modifier maak je ze allemaal ungreedy. En met een ? erachter draai je greedy en ungreedy om op die plek.quote:Op vrijdag 20 november 2009 20:38 schreef Sirolf het volgende:
[..]
Als je een ? achter het sterretje plaatst zou het moeten werken. Da's het verschil tussen greedy en lazy binnen regular expressions.
Ik moet er eens een fatsoenlijk boek over lezenquote:Op vrijdag 20 november 2009 21:43 schreef Light het volgende:
[..]
True, standaard zijn dingen als * en + in regular expressions allemaal greedy. Met de /U modifier maak je ze allemaal ungreedy. En met een ? erachter draai je greedy en ungreedy om op die plek.
Een boek lezen hoeft nog niet eens vind ik. Gewoon dit downloaden en naast je leggen, en een programma als Regex Coach gebruiken om te oefenen. Binnen een paar uurtjes heb je het al onder de knie als je er even voor gaat zitten.quote:Op zaterdag 21 november 2009 00:10 schreef PiRANiA het volgende:
[..]
Ik moet er eens een fatsoenlijk boek over lezen
Ik gebruik het best veel, maar moet steeds door forums achter dit soort dingetjes komen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class db { private static $instance; private static $db; public function getInstance() { if (is_null(self::$instance)) { self::$instance = new db; } return self::$instance; } public function __construct() { mysql_connect('host', etc); } public function query($sql) { } } class user { private static $db; public function __construct() { $db = db::getInstance(); } public function login($u, $p, $t) { $query = self::$db->query("JE QUERY HIER"); } } $u = new user; print_r($u->login('username','password',true)); ?> |
1 2 3 | Fatal error: Call to a member function query() on a non-object in *\system\classes\class.user.php on line 29 |
Je moet gewoon eerst eens een goed boek kopen. En wat meer lezen over OO.quote:Op zondag 22 november 2009 17:21 schreef Chandler het volgende:
Gatverdamme, kun je dan eens een voorbeeld schetsen die wel zou moeten werken? ik sla blijkbaar gewoon continu de plank mis :'( :P
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class user { private $db; public function __construct() { $this->db = db::getInstance(); } public function login($u, $p, $t) { $query = $this->db->query("JE QUERY HIER"); } } $u = new user(); ?> |
Da's ook een optie. Hoeveel verschil er is in geheugengebruik, weet ik niet.quote:Op zondag 22 november 2009 17:29 schreef Pakspul het volgende:
Haal die $db variabel uit de class, dat is echt geheugen versmering eerste klas
Wanneer je de DB nodig hebt doe je even DB::functienaam(); en dan query uitvoeren en waarde returnen. Garbage cleaner zorgt er dan zelf weer voor dat DB uit geheugen gaat en niet in de klasse blijft zwerven/.
Smarty ben ik nu even mee aan het klooien en ziet er goed uit! Vele malen uitgebreider dan m'n huidige template parserquote:Op zondag 22 november 2009 18:53 schreef hamkaastosti het volgende:
smarty is geloof ik de meest uitgebreide geloof ik. Zelf maak ik enkel nog gebruik van de beste template engine: php zelf
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |