IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

projet PHP avec un MVC sans Frameworkzend


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut projet PHP avec un MVC sans Frameworkzend
    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
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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 tes idées farfelues besoins.

    Un peu de doc peut aider: http://en.wikipedia.org/wiki/Model%E...0%93controller

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    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 tes idées farfelues besoins.
    Je terminerais différemment :
    Citation Envoyé par Benjamin Delespierre Voir le message
    mais ça ne veut pas dire que tu ne peux pas créer le tien selon tes idées farfelues besoins.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Si ça vous branche, je viens de publier le mien (il est encore en béta): http://code.google.com/p/php-axiom/

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    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 :
    Error 500 - Internal server error
    Un problème inattendu est survenu.
    Veuillez réessayer ultérieurement.
    Quel est le problème ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    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 ?
    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

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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 : ...
    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 paresse

    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
    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
    Remplacer le RewriteBase par la base URL correcte, par exemple si tu accède au projet par http://localhost/test/, ce sera RewriteBase /test

    - application\.htaccess
    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>
    Même chose que précédemment

    - application\webroot\.htaccess
    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>
    Même chose que précédemment

    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:
    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");
        }
     
    }
    La méthode index est obligatoire car elle caractérise l'action par défaut pour le contrôleur.

    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:
    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
    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.

    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:
    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>
    On y retrouve la variable renvoyée par le contrôleur.

    Il ne reste qu'a appeller http://localhost/test/foo/bar (dans notre exemple) pour visualiser le résultat.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Ouh, là, là ; je crois que je vais attendre qu'un outil fasse tout ça pour moi (je t'accorde une ou deux semaines ), et attendre aussi la doc :
    Un jour je paierai pour ma paresse
    Ca, c'est sûr
    La méthode index est mandataire
    Heureusement que je sais qu'en anglais mandatory=obligatoire, car en français, ça n'a rien à voir
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'ai fait un stub de documentation sur la page du projet dans le wiki.

    Ouh, là, là ; je crois que je vais attendre qu'un outil fasse tout ça pour moi
    Vu que c'est un framework et non un CMS, je ne ferai pas un tel outil. En même temps c'est pas la mort de modifier 3 directives.

    Si tu installe dans c:/wamp/www/axiom, bah tu as juste à changer RewriteBase en /axiom dans les 3 fichiers .htaccess, ce n'est pas bien compliqué

    En attendant que je fasse une doc digne de ce nom, tu peux toujours t'amuser à regarder les classes de la libraire, ça te donnera de bonnes idées

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut merci pour axiom
    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.

  11. #11
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    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

Discussions similaires

  1. Livre d'Or PHP avec fichier texte (sans base de données)
    Par Invité dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 7
    Dernier message: 24/04/2016, 06h53
  2. Projet PHP avec javascript validation
    Par esteph dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 17/12/2008, 22h58
  3. Réponses: 2
    Dernier message: 04/10/2007, 11h04
  4. [PHP] Conversion XML -> PDF avec CSS et sans XSL
    Par k-djo dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/03/2007, 08h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo