Bonjour
j'apprends en ce moment le MVC avec PHP
et je voudrait pouvoir creer un site web avec un MVC sans l'utilisation de FramworkZend
c possible ???
si oui, exemples ?
cordialement
Bonjour
j'apprends en ce moment le MVC avec PHP
et je voudrait pouvoir creer un site web avec un MVC sans l'utilisation de FramworkZend
c possible ???
si oui, exemples ?
cordialement
Bien sûr m'sieur. MVC est un Pattern qu'implémentent la quasi totalité des frameworks actuels, mais ça ne veut pas dire que tu ne peux pas créer le tien selon tesidées farfeluesbesoins.
Un peu de doc peut aider: http://en.wikipedia.org/wiki/Model%E...0%93controller
Si ça vous branche, je viens de publier le mien (il est encore en béta): http://code.google.com/p/php-axiom/
Ayant lu que c'était plus simple que ZF et symfony, ça m'a branché (sachant qu'on m'a déjà dit que symfony était plus abordable que ZF et que je n'arrive même pas à installer symfony...).
Comme tu n'indiques rien, j'ai supposé que pour le démarrer, il faut lancer ".../application/index.php" ; j'ai passé mon hébergeur en PHP5 pour ne pas avoir d'ennui, mais quand je lance le fichier, ça me donne :Quel est le problème ?Error 500 - Internal server error
Un problème inattendu est survenu.
Veuillez réessayer ultérieurement.
normalement tu dois faire un vhost, mais on accède pas pas les fichier php,
http://exemple.com arrive dans le controller index sur l'action index
http://exemple.com/user/all arrive dans le controller user sur l'action all
il faut aussi bien régler ton htaccess
Oui je l'ai publié ce week-end et je n'ai pas encore écrit de documentation end-user... Un jour je paierai pour ma paresseComme tu n'indiques rien, j'ai supposé que pour le démarrer, il faut lancer ".../application/index.php" ; j'ai passé mon hébergeur en PHP5 pour ne pas avoir d'ennui, mais quand je lance le fichier, ça me donne : ...
Il y a 3 fichiers .htaccess à configurer pour faire fonctionner le framework. Ils sont là pour accéder directement à /application/webroot/index.php en récupérant l'URL qu'il mets dans $_GET.
Voici les contenus des fichiers .htaccess:
- .htaccess
Remplacer le RewriteBase par la base URL correcte, par exemple si tu accède au projet par http://localhost/test/, ce sera RewriteBase /test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /axiom RewriteRule ^$ application/webroot/ [L] RewriteRule (.*) application/webroot/$1 [L] </IfModule> php_flag short_open_tag 1
- application\.htaccess
Même chose que précédemment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /axiom RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule>
- application\webroot\.htaccess
Même chose que précédemment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /axiom RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !favicon.ico$ RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
Pour commencer à créer une nouvelle page voici une courte explication:
Dans notre exemple, on supposera que le framework est déployé dans le répertoire 'test' situé à la racine d'apache (/var/www/test/ sous linux ou c:/wamp/www/test/ sous windows).
1 - créer un nouveau contrôleur
Les contrôleurs vont dans /application/controller/.
Les requêtes sont automatiquement redirigées sur /application/webroot/index.php. Dans ce script, l'application est démarée (on appelle /application/config/bootstrap.php - c'est également là qu'on fera la connexion à la base de données) puis on appelle le routeur qui va décortiquer l'URL pour trouver le contrôleur et l'action. Si par exemple on à appelé http://localhost/test/foo/bar, le routeur cherchera un contrôleur FooController.class.php et exécutera l'action bar (soit une de ses méthodes).
Exemple:
La méthode index est obligatoire car elle caractérise l'action par défaut pour le contrôleur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php class FooController extends BaseController { public static function index () { } public static function bar () { $variable = "say hello to peter"; return compact("variable"); } }
Les méthodes du contrôleur renvoient des tableaux qui sont les données destinées aux vues. Il est recommandé d'utiliser compact pour cela car cette fonction à l'avantage d'être silencieuse au niveau des erreurs:
Note: les actions des contrôleurs doivent être déclarées statiques car elles seront appelées statiquement par le routeur - de plus l'appel à une méthode de classe est 4x plus rapide que l'appel à une méthode d'instance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $a = 1; $b = compact('a', 'inexistant'); // ne lève pas d'erreur et renvoie un tableau avec uniquement $a $b = array($a, $inexistant); // lève un E_NOTICE et mets null à la place de $inexistant
2 - créer un vue associée
Les vues vont dans le répertoire /application/view, elles sont hiérarchisées par contrôleur. On va donc créer un vue pour l'action bar du contrôleur foo dans /application/view/foo/bar.html.php (on spécifie le format avant .php de sorte qu'on puisse construire d'autres vues pour d'autres format comme bar.json.php pour l'ajax par exemple).
Exemple:
On y retrouve la variable renvoyée par le contrôleur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<h2>This is a sample made with AXIOM</h2> <p>The given variable is <?=$variable?></p>
Il ne reste qu'a appeller http://localhost/test/foo/bar (dans notre exemple) pour visualiser le résultat.
merci pour ce petit framework, je m'y attèle actuellement, bon exercice pour ce familiariser aux pattern MVC en php5 et certainement un outil qui me sera utile à l'avenir pour des projets perso.
Salut,
tu peux aussi regarder du côté du framework cakePHP : http://www.cakephp-fr.org/
Très simple d'utilisation (de ce que j'en ai entendu) et avec une belle communauté derrière.
Finality
Partager