Petite question à propos PHP POO, MVC ?

Fermé
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 - Modifié par chabacha109 le 30/06/2011 à 03:12
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 - 14 juil. 2011 à 01:26
Bonjour,


je suis entrain de concevoire une application web dynamique stockant trop d'informations,
c'est pour cela j'ai choisi l'architecture MVC avec php5(poo).
alors : j'ai deux classes controleur(traitement des données avec php) , modéle (connection avec la base de donnée , requetes sql.....) et une page index. php(c'est la vue.., affichage des résultats ..)

la question qui se pose ici : quelle est le type de relation entre la classe controleur et modéle ??(simple relation, héritage....) ???


voila mon probléme, j'espére que c'est claire
merci d'avance^^





To Be Or Not To Be , Marwen
A voir également:

6 réponses

avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
22 juin 2011 à 17:29
Salut,

« et une page index. php(c'est la vue.., affichage des résultats ..) »
Je pense que index.php devrait plutôt être le contrôleur car ceux-ci sont appelés par le navigateur, pas les vues.

« quelle est le type de relation entre la classe controleur et modéle ??(simple relation, héritage....) ? »
Le contrôleur doit inclure le modèle.
À partir de là, tu peux utiliser la classe ou les fonctions écrites dans le modèle.
Le contrôleur doit également inclure les vues.
1
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
Modifié par chabacha109 le 23/06/2011 à 01:40
salut merci pour la réponse :),

aprés ce tutoriel j'ai trouvé que ta réponse est la bonne....
http://www.siteduzero.com/tutoriel-3-31452-adopter-un-style-de-programmation-clair-avec-le-modele-mvc.html
j'ai tort ! , index.php est le controleur...,je comprend bien..
en effet, il me reste une deuxiéme question :
pour mon application je doit travailler avec l' orienté objet , malheureusement dans ce tuto c'est du php classique....
bref : je vous donne un exemple de mvc avec POO , ensuite tu me donne ton avis à propos.

c'est la page controleur.php:



//appel au modéle

include_once("modéle.php");     


class membre{     
private $login;     
private $password;     
private $pays;     

public __construct($log)     
{


/*
NB get_membre_information($x) c'est une fonction dans "modéle.php"
elle retourne un tableaux des informations de membre
*/

$tab=get_membre_information($log);     
$this->login=$tab['login'];     
$this->password=$tab['password'];     
$this->pays=$tab['pays'];     
}     

public function connect($log,$pass)     
{     
$est_connecte=existe_membre($log,$pass);     
if($est_connecte)     
{ echo "ok";     
    $_SESSION["login"]=$log;     
     }     
     else     
        echo "no";     

}     


public function inscri($log,$pass,$pays)     
{     
$res=ajouter_membre($log,$pass,$pays);     
if($res)     
echo "ok";     
else     
echo "no";     
}     

}     


include_once("vue.php");


----------------------------------------------------------------------
modéle.php(un ensemble des fonctions) :

//connection..

$connexion = new PDO("mysql:host=root;dbname=ma_base");     

function ajouter_membre($log,$pass,$pays)     
{....}     
function existe_membre($log,$pass)     
{....}     
function get_membre_information($log)     
{....}

----------------------------------------------------------------------
vue.php(instanciation de la classe membre....)
par exemple :

$m=new membre("chabacha109");     
$m->connect("chabacha109","xxxx");     
.....

----------------------------------------------------------------------

je crois que c'est parfait ? non ?

bon, dans cet exemple la page "modéle.php" est un ensemble des fonctions,
heureusement ici les appelles vers les fonctions est assez simple,
mais dans le cas où la page "modéle.php" soit une classe, comment faire dans ce cas ,
plutôt comment interroger les methodes de cette classe a partir la classe membre ??

j'ai une idée mais je ne suis pas sure ...
faire une instance de la classe modéle.php, ensuite appeller une methode..
le probléme ici c'est (a chaque appel a une methode de la classe membre il faut faire une instance de la classe modéle.php..) c'est trop couteux en mémoire....je crois
voila donc.


merci pour votre attention ^_^



To Be Or Not To Be , Marwen
1
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
23 juin 2011 à 13:02
Salut,

Tu n'as pas encore tout à fait compris.

Pour commencer, la vue ne contient pas de code de code PHP.
Enfin, si, pour afficher les variables, faire des boucles, des conditions (afficher un message s'il n'y a aucun article par exemple).
Ici, ta vue fait appel au contrôleur, ce n'est pas normal.

Un modèle représente une ressource. Ainsi, tu as un modèle pour les membres, un autre pour les articles, un autre pour les catégories, etc.
Le modèle est souvent un classe contenant des méthodes pour ajouter, modifier, supprimer ou récupérer les données d'un élément (une news, un membre, etc).

Quant au controleur, dans ton cas, utiliser une classe ne sert à rien.
Ça peut être utile dans la cas où tu as une classe de base « Controller » de base contenant des méthodes pour (par exemple) traiter la requête HTTP, la mise en cache, les cookies, etc : c'est plus souvent utilisé dans les frameworks.
1
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
Modifié par chabacha109 le 24/06/2011 à 20:32
salut,
;( , je ne comprend pas mais j'ai lu attentivement le tuto ,je crois que le problème c'est le passage vers le POO, déja le tuto contient du php classique....
j'ai décidé de démarrer avec les framework comme zend, pour mieux comprendre
grand merci ^^
0
Bonjour,

Pourquoi n'essayerez-vous pas un Framework PHP comme Zend ou Symphony ?
Ils intègrent toutes ces notions MVC déjà implémentées et il existe de nombreux tutoriaux pour débuter.
Si vous maîtrisez bien PHP cela vaut la peine.
Zébulon
1
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
Modifié par chabacha109 le 24/06/2011 à 20:34
salut,
oui effectivement, je vais commencer un tuto zend ;)
merci a vous aussi ^^
0
Utilisateur anonyme
25 juin 2011 à 14:32
Je ne connais pas ces frameworks mais j'ose te conseiller aussi, CakePHP.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
Modifié par chabacha109 le 11/07/2011 à 13:00
Bonjour,

j'ai un probléme avec le réécriture des url sous zend...


la class bootstrap.php :    
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {    

}    


mon fichier .htaccess situé dans Public/ :    

RewriteEngine On    
RewriteCond %{REQUEST_FILENAME} -s [OR]    
RewriteCond %{REQUEST_FILENAME} -l [OR]    
RewriteCond %{REQUEST_FILENAME} -d    
RewriteRule ^.*$ - [NC,L]    
RewriteRule ^.*$ index.php [NC,L]    




lorsque je tape http://localhost:8888/zendtest/Public/ ,bah ici ça marche
il appel le controleur IndexController.php et la vue views/scripts/index/index.phtml.....

en fait IndexController.php c'est le controlleur par defaut méme pour index/index.phtml.


ensuite j'ai créé mon propre conrolleur et vue pour tester le mod rewrite:

application/controllers/AfficheController.php

class AfficheController extends Zend_Controller_Action    
{    

public function init()    
{    

}    

public function indexAction()    
{    

}    

}   


application/views/scripts/affiche/index.phtml

<center>    

hello !    
c'est la vue de AfficheController.php !!!    

</center>    



lorsque je tape http://localhost:8888/zendtest/Public/affiche/index
il affiche :
An error occurred
Page not found.



il me redirige vers la page error/error.phtml, autrement dit
la ressource "affiche" de(AfficheController.php) et le service "index" de( function indexAction(){})
n'existent pas !!

d'ou vient le probléme, j'ai bien tout préparer ! , en plus il marche avec le controlleur et la vue par defaut

AIDEZ MOI SVP , merci beaucoup beacoup ^_^


To Be Or Not To Be , Marwen
0
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
14 juil. 2011 à 00:57
pas des réponses ! :(((

voila mon projet uploder sur 4shared pour mieux comprendre...
http:// www . 4shared . com / file / Hu28VRMX / zendtestSite_De_Zero.html?


merci d'avance
0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
Modifié par avion-f16 le 14/07/2011 à 01:15
Je n'ai jamais utilisé Zend Framework, je ne saurais pas t'aider plus, désolé.
Bonne continuation.

« mon fichier .htaccess situé dans Public/ : »
Normalement tu devrais tomber directement dans ce dossier en tapant http://localhost:8888/ , sans avoir la possibilité de remonter dans les autres dossiers.
0
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
14 juil. 2011 à 01:26
salut,
@avion-f16 , pas de problème monsieur ^^ , j'attend les amis....

le dossier Public sous zend contient par convention :
un fichier index.php et un .htaccess
c'est le déclencheur de toute l'application :), ensuite si vous voulez supprimer /public
il suffit de créer une hôte virtuel....
0