Pagina's includen
ik gebruik tot op heden altijd includes etc maar dit vind ik echt onhandig worden ik vind het niet dynamisch als het ware dus mijn vraag hoe doen jullie het?
maniertje hoe ik het doe:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (!isset($_GET['page'])) {
$_GET['page'] = 'home.html';
}
switch ($_GET['page']){
case 'home.html':
case 'about.html':
case 'contact.php':
case 'mywork.html':
$file = $_GET['page'];
break;
default:
$file = '404.html';
}
include_once $file;
?>
if (!isset($_GET['page'])) {
$_GET['page'] = 'home.html';
}
switch ($_GET['page']){
case 'home.html':
case 'about.html':
case 'contact.php':
case 'mywork.html':
$file = $_GET['page'];
break;
default:
$file = '404.html';
}
include_once $file;
?>
maar zoals jullie zien is dit niet echt dynamisch.
ik ben benieuwd hoe jullie het makkelijker/dynamischer doen!
Maar ik heb ooit wel eens een leuk scriptje gemaakt op het flat PHP niveau voor routing:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// werken met constants is altijd handig
define('ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
// haal alle pagina's op uit %root%/pages/
// die eindigen met .php
$pages = glob(ROOT.'pages'.DIRECTORY_SEPARATOR.'*.php');
// pak alleen de naam van het bestand
$pageNames = array_map('basename', $pages);
if (!isset($_GET['p'])) {
$_GET['p'] = 'home';
}
if (in_array($_GET['p'].'.php', $pageNames)) {
// include het bestand
require ROOT.'pages'.DIRECTORY_SEPARATOR.$_GET['p'].'.php';
} else {
// include de 404 error pagina
require ROOT.'error'.DIRECTORY_SEPARATOR.'404.php';
}
?>
// werken met constants is altijd handig
define('ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
// haal alle pagina's op uit %root%/pages/
// die eindigen met .php
$pages = glob(ROOT.'pages'.DIRECTORY_SEPARATOR.'*.php');
// pak alleen de naam van het bestand
$pageNames = array_map('basename', $pages);
if (!isset($_GET['p'])) {
$_GET['p'] = 'home';
}
if (in_array($_GET['p'].'.php', $pageNames)) {
// include het bestand
require ROOT.'pages'.DIRECTORY_SEPARATOR.$_GET['p'].'.php';
} else {
// include de 404 error pagina
require ROOT.'error'.DIRECTORY_SEPARATOR.'404.php';
}
?>
vandaar dat ik in flat php wat wilde maken.
maar nu ik er toch over nadenk is het wel handig als ik het oefen met OOP ik bedoel moet het ooit toch leren.
welke framework raad jij aan? codeIgnitor of sympfony of ..?
Ik denk dat Kees en Niels je Zend Framework aanraden en dat er ook wel mensen zijn die hier CI of cakePHP aanraden.
Ik ben ooit begonnen met CI, maar daarna overgestapt op ZF, waarmee ik nooit veel heb gedaan en daarna Symfony en toen ben ik bij Symfony blijven hangen. De manier van scripten van Symfony en de gedachte spraken mij erg aan.
Het is dus ook net wat je aanspreekt.
Wat het leuke is aan Symfony is dat het is opgebouwd uit allemaal componenten die ook apart te downloaden zijn. Symfony routing is er daar 1 van. Daarom kun je ook gewoon alleen de routing gebruiken, zonder het framework.
Wat ik je aanraad om te doen als je met Symfony begint:
1) Lees eerst de tutorial From Flat PHP to Symfony2. Hierdoor krijg je een mooie introductie en begin je de voordelen te zien van het gebruik van een framework als Symfony.
2) Lees de tutorial serie Quick tour. Hierdoor leer je omgaan met de hoofd onderdelen van Symfony.
3) Verzin een project dat je wilt maken. Helemaal niet moeilijk gaan doen. Maak gewoon een tweet systeem ofzo. Iedereen kan een berichtje plaatsen, die wordt opgeslagen en vervolgens getoond.
4) Dit lukt je natuurlijk nooit om in 1 keer goed te doen. Gebruik dan The Book als referentie. Hierin worden alle stappen van de eerste tot aan de laatste uitgelegd. Begin gewoon bij hoofdstuk 1 en lees je er doorheen, terwijl je je project maakt.
5) Je bent bijna zo ver. Nu heb je Symfony als het goed is door, hoe het werkt en wat je allemaal moet doen. Nu kun je verder gaan. Nu kun je verder gaan lezen in The Cookbook. Hierin staat alles zeer goed uitgelegd, probeer niet alles in 1 keer te lezen: Lees wat je nodig hebt en pas het meteen toe.
Een andere tutorial serie die je ergens halverwege dit proces kan helpen is: Create Your Framework, geschreven door Fabien Potencier, de man achter Symfony. Hierdoor leer je begrijpen hoe een framework werkt en hoe het in elkaar zit.
Even een sidenote: Zoals je ziet linken al mijn links naar de 2.0 documentatie en niet de master documentatie, dit kun je linksboven bij elke pagina aanpassen. Ik raad aan altijd de 2.0 documentatie te lezen zolang 2.1 nog niet stable is, donderdag komt beta uit maar door de nog niet goed werkende Form objecten kan de stable nog wel even duren.
Alle updates en wijzigingen van fouten wordt namelijk eerst in de 2.0 documentatie toegevoegd en eens in de tijd aan de master (current). Hierdoor is de 2.0 altijd meer up-to-date.
Offtopic:
Laat je door dit berichtje niet opfokken om symfony te leren. De grote van dit bericht is ook zodat ik nu een mooi referentie berichtje heb, mochten mensen dit ooit nog eens gaan vragen.
Gewijzigd op 19/06/2012 21:46:42 door Wouter J
ik voel me niet opgefokt om nu symfony te gaan gebruiken ik heb er op internet veel informatie over verschaft en het is een hele goede framework maar het is een hele ingewikkelde framework dus ik weet niet of het handig is om dit gelijk al te gaan gebruiken. Cakephp en CI worden veel genoemd als lichte en goede starter frameworks vandaar dat ik voor CI koos. alleen kom ik niet helemaal uit nu met welke map waar of hoe te plaatsen omdat de index.php van CI in mijn root moet volgens dit artikeltje
http://codeigniter.com/user_guide/installation/index.html
maar ik heb al een index.php voor mijn website inhoud moet ik deze dan samenvoegen weet je dat toevallig?
ik zal ondertussen even proberen om alleen routing te installeren van symfony en deze los te gebruiken wie weet dat ik het gelijk heel gaaf ga vinden en dan heeft symfony er weer een aanhanger bij uiteraard!
En tja, Symfony moeilijk, ik vind het wel meevallen. Maar misschien dat als je net begint met OO het wel wat moeilijk is.
Als je het Routing Component van Symfony wilt gebruiken kun je hier de documentatie lezen: http://symfony.com/doc/2.0/component/routing.html (site is momenteel uit de lucht).
Ook kun je misschien kijken naar Silex. Dat noemen ze een microframework, dat betekend dat het de routing voor je regelt en je wat extra handige tools geeft, maar dat je de rest zelf moet doen.
Als je met CI gaat beginnen is deze video tutorial serie van Jeffrey Way misschien wel geschikt voor je. Er zit alleen 1 minpuntje aan: het is een beetje oud. Hierdoor zul je her en der wat verschillen merken (zo is het niet Controller maar CI_Controller geworden).
wouter thanks for the linkjes ik ga er even een blik op werken als ik er niet uitkom hoor je het gelijk!
mappen structuur ziet er nu zo uit:
map->index.php + CI bestanden (index2.php CI ) en nog een paar website files (pagina's etc)
Echter, Zend is vrij makkelijk te leren.
Kijk hier maar eens:
http://akrabat.com/zend-framework-tutorial/
Reshad, je begint verkeerd. Je moet je site beginnen met alleen CI en NIKS anders. Straks ga je vanuit CI alles opbouwen zoals CI dat graag ziet.
kijk eens in de controller map naar welcome.php.
Ik zit nu op mijn mobiel dus ik kan nu ff geen code tikken.
Zal vanavond ff een opzet voor je maken.
zet straks ff wat code van jou site ff hier zodat ik hem ff omzet naar ci. ;)
Quote:
zet straks ff wat code van jou site ff hier zodat ik hem ff omzet naar ci. ;)
Het is denk ik beter dat Reshad zelf leert om iets om te zetten naar CI...
Reshad, volg eens rustig die videotutorial die ik je gaf. Dat helpt je echt! (zo ben ik ook begonnen!)
was alleen maar lief bedoeld.
Denk als reshad een controller, model, en view heeft dat het al een stuk duidelijker is.
Ga niet de hele site bouwen voor hem...
tevens heb ik nog een vraag waarom gelijk stoppen met CI als ik het doorheb?
Of moet ik nog wat voorbeeld code tikken?
Kijk liever naar Zend (http://akrabat.com/zend-framework-tutorial/) of als het dan echt moet naar Symphony... ;)
waarom niet gewoon je website kunnen bouwen en als je iets van php nodig hebt de class loaden en gebruiken?
en ik begrijp dat symfony geen MVC framework is. maar is het daar ook zo als bij CI dat je alles daarvanuit moet gaan bouwen?
Toevoeging op 22/06/2012 11:45:31:
@chi ik snap wat je bedoelt. maar ik wou alleen maar even leren hoe OOP nou precies werkt en hoe het echt gebruikt wordt.
CI is makkelijk te leren volgens iedereen. vandaar dat ik CI beginnetje gemaakt heb. ik zal even naar symfony gaan kijken om te zien hoever ik het snap!
Ja, je kan het een nadeel vinden. Ik vind het ook wel eens irritant, dat Black-box gevoel. Je vult wat in, maar wat er dan gebeurd? Joost mag het weten.
Daarom ben ik eens de symfony source doorgegaan, gekeken wat er nou gebeurd en hoe het werkt en dan krijg je respect voor zo'n framework en begin je hem helemaal door te krijgen.
Als je niet van dat black-box gevoel houdt kun je ook eens naar Silex kijken, of andere micro-frameworken. Die hebben praktisch geen black-box gevoel en die kun je wel in een bestaande website inbouwen.
En wat jij wilt, alleen als je een klasse nodig hebt iets gebruiken, is niet echt een framework, meer libaries. Bijv:
Als je wilt communiceren met de DB gebruik je Doctrine ORM, als je een mail wilt versturen gebruik je de Swiftmailer klasse, als je een templating systeem wilt gebruik je Twig, als je een Console applicatie maakt gebruik je de Symfony Console component, enz. Dat werkt ook heel fijn.
PS: Als je Symfony wilt leren moet je wel de stappen volgen die ik je had gegeven, anders val je echt in een groot vak. En 1 ding dat je ook moet doorhebben: Namespaces. Als je dat niet begrijpt kun je niet heel veel met Symfony, het is namelijk allemaal opgebouwd uit namespaces.
Gewijzigd op 22/06/2012 11:50:48 door Wouter J
voor die blackbox gevoel ja misschien is het een kwestie van wennen aan een framework aangezien ik het nog nooit eerder heb gedaan.
ik denk toch wel dat ik zelf alleen libraries ga gebruiken uiteindelijk en zelf mn eigen classes ga gebruiken omdat een framework meestal zoo uitgebreid is dat ik misschien de helft niet snap waar het vandaan komt. zo heb ik met CI bijv de hele tijd
maar daarachter zit zoveel meer bijv. in de controller en in de model etc dus ik denk dat zoals jij zegt de framework goed moet doorspitten wil je weten waar iets precies vandaan komt en wat het doet.
al met al ga ik nu is een gokje wagen met symfony dus Stay Tuned guys!
heb je toevallig ergens een zelfde soort tutorial als bij CI met videos?