Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2506 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  29  30  31  ..  62  63  64  65  66  67
Auteur Sujet :

Model View Controller (MVC) - Architecture des applications PHP

n°1592729
masklinn
í dag viðrar vel til loftárása
Posté le 28-07-2007 à 15:12:39  profilanswer
 

Reprise du message précédent :

supermofo a écrit :

Vous savez si ya eut des retours sur les ORM des framework recent. Pour l'instant il sont tous sur le data gateway pattern, est ce qu'il yen a qui ont pousse l'integration plus loin ?


La majorité sont plutôt sur Active Record, surtout depuis l'arrivée de Rails.

 

En Python, il y a SQLAlchemy qui est basé sur le Data Mapper Pattern si tu veux.

Message cité 1 fois
Message édité par masklinn le 28-07-2007 à 15:15:22

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 28-07-2007 à 15:12:39  profilanswer
 

n°1592738
creusois
Posté le 28-07-2007 à 16:26:17  profilanswer
 

Bonjour,
 
Je viens de lire votre post sur le MVC en PHP. Assez interessant, seulement il n'y a aucun exemple de MVC complet.  
 
Le premier post est bien fait, mais il ne marche pas seul. Si je fais trois classe comme ca, rien ne marche, il faut qq part instancier un premier objet ? (celui de la vue ? du controleur ?)
 
Qqn pourrait-il m'eclairer la dessus ?
 
Merci

n°1592748
supermofo
Hello World !
Posté le 28-07-2007 à 17:39:04  profilanswer
 

masklinn a écrit :


La majorité sont plutôt sur Active Record, surtout depuis l'arrivée de Rails.

 

En Python, il y a SQLAlchemy qui est basé sur le Data Mapper Pattern si tu veux.

 


Exactemement ce que je cherchais merci beaucoup !


Message édité par supermofo le 28-07-2007 à 17:43:21

---------------
Echange de 3000+ liens PR 3 -> 5, me pm urgent !
n°1592751
vanadium
N° Atomique : 23
Posté le 28-07-2007 à 18:15:28  profilanswer
 

supermofo > Les ORMS les plus connus et utilisés sont Propel et PHPDoctrine. (le dernier est très récent et très prometteur)
 
Creusois > Il suffit de prendre des frameworks existants comme symfony qui implémentent à merveille le pattern MVC. D'ailleurs, la documentation de symfony est très complète et explique très bien le MVC.

n°1592841
supermofo
Hello World !
Posté le 28-07-2007 à 23:04:54  profilanswer
 

Code :
  1. $this->hasOne('Address', array('local' => 'id', 'foreign' => 'user_id'));
  2.         $this->hasOne('Email', array('local' => 'email_id', 'foreign' => 'id'));
  3.         $this->hasMany('Phonenumber', array('local' => 'id', 'foreign' => 'user_id'));
  4. $query->select('u.*, COUNT(p.id) num_posts')
  5.       ->from('User u, u.Posts p')
  6.       ->where('u.id = ?', 1)
  7.       ->groupby('u.id');
 


PHPDoctrine a l'air pas mal aussi en effet. Maintenant faut voir ce qu'il ya dedans :)


Message édité par supermofo le 28-07-2007 à 23:13:17

---------------
Echange de 3000+ liens PR 3 -> 5, me pm urgent !
n°1592847
ratibus
Posté le 28-07-2007 à 23:25:42  profilanswer
 

PHPDoctrine fait partie des projets sélectionnés pour le Google Summer of Code 2007 donc projet très actif cet été ;)
A voir à la rentrée le résultat du travail.

n°1592909
FlorentG
Posté le 29-07-2007 à 12:57:31  profilanswer
 

creusois a écrit :

Le premier post est bien fait, mais il ne marche pas seul. Si je fais trois classe comme ca, rien ne marche, il faut qq part instancier un premier objet ? (celui de la vue ? du controleur ?)


De manière générale, il faut instancier le Controller et lancer une action ou une méthode particulière. A lui alors d'instancier le bon model et la bonne view :) Après plein de Framework automatisent certaines tâches : instanciation du bon Controller suivant ce qu'il y a dans l'URL, instanciation du model et de la view d'après le nom du Controller

n°1592913
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:05:53  profilanswer
 

FlorentG a écrit :


De manière générale, il faut instancier le Controller et lancer une action ou une méthode particulière. A lui alors d'instancier le bon model et la bonne view :) Après plein de Framework automatisent certaines tâches : instanciation du bon Controller suivant ce qu'il y a dans l'URL, instanciation du model et de la view d'après le nom du Controller


Jamais vu ça, l'instanciation auto du controller toujours, mais le modèle est instancié manuellement (habituellement via des méthodes statiques de création/récupération) vu qu'on peut avoir besoin de N modèles dans un seul contrôlleur, et les vues sont instanciées manuellement mais avec des helpers pour simplifier la chose.

Message cité 2 fois
Message édité par masklinn le 29-07-2007 à 13:06:38

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592914
skeye
Posté le 29-07-2007 à 13:07:30  profilanswer
 

masklinn a écrit :

mais le modèle est instancié manuellement (habituellement via des méthodes statiques de création/récupération) vu qu'on peut avoir besoin de N modèles dans un seul contrôlleur, et les vues sont instanciées manuellement mais avec des helpers pour simplifier la chose.

 

m'enfin.[:pingouino]
C'est le controleur qui sait de quoi il a besoin dans le modèle et dans la vue...c'est donc lui qui les instancie...[:dawao]

Message cité 1 fois
Message édité par skeye le 29-07-2007 à 13:07:44

---------------
Can't buy what I want because it's free -
n°1592921
FlorentG
Posté le 29-07-2007 à 13:31:30  profilanswer
 

masklinn a écrit :


Jamais vu ça, l'instanciation auto du controller toujours, mais le modèle est instancié manuellement (habituellement via des méthodes statiques de création/récupération) vu qu'on peut avoir besoin de N modèles dans un seul contrôlleur, et les vues sont instanciées manuellement mais avec des helpers pour simplifier la chose.


cf. CakePHP

mood
Publicité
Posté le 29-07-2007 à 13:31:30  profilanswer
 

n°1592922
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:32:01  profilanswer
 

skeye a écrit :


 
m'enfin.[:pingouino]
C'est le controleur qui sait de quoi il a besoin dans le modèle et dans la vue...c'est donc lui qui les instancie...[:dawao]


J'ai jamais dit le contraire, mais florentg disait que vue et model pouvaient être instanciés automatiquement en fonction du nom du contrôlleur, je disais que j'avais jamais vu un truc pareil.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592926
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:38:02  profilanswer
 


Va faloir me spécifier où, pour autant que j'ai pu le voir cakephp

  • Rend automatiquement une vue en fonction de la paire (model, action) si #render n'a pas été appelé (et on peut désactiver tout render automatique) (donc ok on peut considérer que tu as à moitié raison là dessus)
  • Importe (pas instancie, ça n'a aucun rapport) automatiquement un model correspondant au controlleur courant (e.g. Foo est automatiquement importé si on est dans FoosController), à moins de remplir $uses qui dégage totalement ce comportement

Message cité 1 fois
Message édité par masklinn le 29-07-2007 à 13:38:39

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592927
FlorentG
Posté le 29-07-2007 à 13:38:32  profilanswer
 

Ouais dans Cake c'est automatique un UserController va charger automatiquement UserModel

n°1592928
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:39:06  profilanswer
 

FlorentG a écrit :

Ouais dans Cake c'est automatique un UserController va charger automatiquement UserModel


Ya comme une différence entre charger et instancier tu sais [:petrus75]


Message édité par masklinn le 29-07-2007 à 13:39:24

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592929
FlorentG
Posté le 29-07-2007 à 13:39:22  profilanswer
 

masklinn a écrit :

  • Importe (pas instancie, ça n'a aucun rapport) automatiquement un model correspondant au controlleur courant (e.g. Foo est automatiquement importé si on est dans FoosController), à moins de remplir $uses qui dégage totalement ce comportement

Pour la view je sais pas, maintenant pour le model c'est vrai, cf. doc de uses :

Citation :

$uses
 
Does your controller use more than one model? Your FragglesController will automatically load $this->Fraggle, but if you want access to $this->Smurf as well, try adding something like the following to your controller:
var $uses = array('Fraggle','Smurf');
 
Please notice how you also need to include your Fraggle model in the $uses array, even though it was automatically available before.

n°1592931
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:40:24  profilanswer
 

FlorentG a écrit :


Pour la view je sais pas, maintenant pour le model c'est vrai, cf. doc de uses :

Citation :

$uses

 

Does your controller use more than one model? Your FragglesController will automatically load $this->Fraggle, but if you want access to $this->Smurf as well, try adding something like the following to your controller:
var $uses = array('Fraggle','Smurf');

 

Please notice how you also need to include your Fraggle model in the $uses array, even though it was automatically available before.



Apprends à lire, ils importent la classe, ils n'instancient rien du tout [:mlc]

Message cité 1 fois
Message édité par masklinn le 29-07-2007 à 13:40:38

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592932
skeye
Posté le 29-07-2007 à 13:40:25  profilanswer
 

Ah oui, mal lu.[:petrus75]
ça me parait crétin, en effet.[:petrus75]
Qui c'est qui les instancie, d'ailleurs, si c'est pas le contrôleur?:o
Le même bout de code qui instancie le bon contrôleur?
Ca revient à avoir un meta-contrôleur qui ne sert quasiment à rien...[:dawao]


---------------
Can't buy what I want because it's free -
n°1592933
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:42:03  profilanswer
 

skeye a écrit :

Ah oui, mal lu.[:petrus75]
ça me parait crétin, en effet.[:petrus75]
Qui c'est qui les instancie, d'ailleurs, si c'est pas le contrôleur?:o
Le même bout de code qui instancie le bon contrôleur?
Ca revient à avoir un meta-contrôleur qui ne sert quasiment à rien...[:dawao]


Il sert à faire le dispatch des contrôlleurs et les opérations automatiques associées au dispatch :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592934
FlorentG
Posté le 29-07-2007 à 13:42:17  profilanswer
 

masklinn a écrit :


Apprends à lire, ils importent la classe, ils n'instancient rien du tout [:mlc]


Bien-sûr que si, banane :o
 
Il faut le remettre dans $uses, uniquement si on charge d'autres model
 
 
cf. The Cake Blog Tutorial :

Code :
  1. <?php
  2.  
  3. class PostsController extends AppController
  4. {
  5.    var $name = 'Posts';
  6.  
  7.    function index()
  8.    {
  9.        $this->set('posts', $this->Post->findAll());
  10.    }
  11. }


 
Ils accèdent cash au model POST (via $this->Post) sans rien faire d'autre

n°1592936
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:43:47  profilanswer
 

FlorentG a écrit :


Bien-sûr que si, banane :o
 
Il faut le remettre dans $uses, uniquement si on charge d'autres model
 
 
cf. The Cake Blog Tutorial :

Code :
  1. <?php
  2.  
  3. class PostsController extends AppController
  4. {
  5.    var $name = 'Posts';
  6.  
  7.    function index()
  8.    {
  9.        $this->set('posts', $this->Post->findAll());
  10.    }
  11. }


 
Ils accèdent cash au model POST (via $this->Post) sans rien faire d'autre


Je laisse tomber, tu ne comprends pas le sens des mots que tu utilises, c'est pas la peine de continuer [:moule_bite]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592937
skeye
Posté le 29-07-2007 à 13:44:33  profilanswer
 

masklinn a écrit :


Il sert à faire le dispatch des contrôlleurs et les opérations automatiques associées au dispatch :o


oui, ben c'est bien ce que je dis.:o[:joce]


---------------
Can't buy what I want because it's free -
n°1592938
TheRom_S
Posté le 29-07-2007 à 13:44:39  profilanswer
 

ça dépend des types de controleurs, y'a bien un front controleur, des controleurs spécialisés dans certaines parties du site (pour faire court) et certains apprécient aussi d'utiliser un controleur spécifique pour chaque formulaire qui correspond à un seul modèle et deux view max (formulaire entrée et affichage liste sortie). Y'a même des MVC où tu donne la structure des données en XML et après les 3 facettes du MVC sont générées auto ... en utilisant par exemple le nom générique de la structure de données


---------------
The Rom's, à votre service
n°1592939
FlorentG
Posté le 29-07-2007 à 13:45:34  profilanswer
 

masklinn a écrit :


Je laisse tomber, tu ne comprends pas le sens des mots que tu utilises, c'est pas la peine de continuer [:moule_bite]


Nan mais là tu va te faire foutre.
 
Dans l'exemple que j'ai posté, le Controller PostsController instancie automatiquement le model PostsModel. C'est bien ce que je dis depuis le début.

n°1592940
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:47:39  profilanswer
 

FlorentG a écrit :


Nan mais là tu va te faire foutre.
 
Dans l'exemple que j'ai posté, le Controller PostsController instancie automatiquement le model PostsModel. C'est bien ce que je dis depuis le début.


I think this word doesn't mean what you think it means.
 
(Et donc je confirme, il n'instancie rien du tout, il importe un modèle, point barre)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592942
FlorentG
Posté le 29-07-2007 à 13:51:43  profilanswer
 

masklinn a écrit :


I think this word doesn't mean what you think it means.
 
(Et donc je confirme, il n'instancie rien du tout, il importe un modèle, point barre)


Donc j'ai bien raison ! Il importe pas, il instancie
 
Je confirme toujours qu'il instancie le model automatiquement. Ou alors la liste des models spécifiés dans $uses. D'ailleurs dans le constructeur du Controller, il remplis $uses avec le nom du Controller pour pouvoir instancier le model.
 
Ou peut-être tu veux dire qu'il récupère une instance ?

n°1592944
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 13:55:37  profilanswer
 

FlorentG a écrit :


Donc j'ai bien raison ! Il importe pas, il instancie


De mieux en mieux, t'es pas foutu de lire une définition de 2 lignes [:pingouino]

 
  • CakePHP importe automatiquement un modèle correspondant au contrôlleur (sauf dans le cas où on utilise $uses), càd qu'il rend la classe de ce modèle disponible dans la scope du contrôlleur sans travail du codeur
  • Si CakePHP instanciait automatiquement un modèle correspondant au contrôlleur, on se retrouverait non pas avec une classe mais avec une instance, ou avec n instances dans le cas d'un listing.


Le premier est trivial si on a des conventions de nommage qui vont bien, le second est quasi impossible à gérer hors des cas CRUD les plus basiques.

Message cité 1 fois
Message édité par masklinn le 29-07-2007 à 13:56:12

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592946
FlorentG
Posté le 29-07-2007 à 13:59:18  profilanswer
 

masklinn a écrit :

  • Si CakePHP instanciait automatiquement un modèle correspondant au contrôlleur, on se retrouverait non pas avec une classe mais avec une instance, ou avec n instances dans le cas d'un listing.

Mais justement, on se retrouve avec une instance :D
 
Regarde la définition que tu m'a filé :

Citation :

Instantiation is the process of creating a specific object which is a member or instance of a class.
 
Usually this is done via an explicitly coded constructor, [...]


 
Et dans Cake, il parcours le tableau $uses, et lancer le constructeur de chaque model qui s'y trouve. Et par défaut, on y trouve le nom du Controller....

n°1592947
Dj YeLL
$question = $to_be || !$to_be;
Posté le 29-07-2007 à 14:02:43  profilanswer
 

Y'a un truc que j'ai du mal à saisir
 
Admettons que j'appelle le contrôleur "pictures" et l'action "view"
 
Donc en gros ça inclus le fichier picturesCtrl.php, mais comment exécuter l'action "view" ?
 
Enfin plus précisément, je suppose que c'est avec un call_user_func_array, et j'arrive bien exécuter l'action, mais une fois dans la méthode, je n'arrive pas comprendre comment on peut utiliser $this, ou accéder aux variables/méthodes déjà définies.
 
J'ai un peu de mal à expliquer clairement, mais c'est justement parce que j'ai du mal à saisir le procédé exact.
 
J'ai essayé d'éplucher pas à pas la manière dont CakePhp se "déroule", mais je me paume dans les méandres de son code :/


---------------
Gamertag: CoteBlack YeLL
n°1592951
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 14:19:27  profilanswer
 

FlorentG a écrit :


Mais justement, on se retrouve avec une instance :D


Non, tu te retrouves avec une classe à partir de laquelle du crées ou récupères des instances, pas avec une instance [:pingouino]

FlorentG a écrit :

Et dans Cake, il parcours le tableau $uses, et lancer le constructeur de chaque model qui s'y trouve. Et par défaut, on y trouve le nom du Controller....


Là encore non, on se retrouve avec une classe, pas avec une instance, $this->Post c'est la classe Post, pas une instance de la classe Post (sur quoi il se baserait pour récupérer des instances de Post, d'abord [:petrus dei])

 

Edit: à moins naturellement que PHP soit tellement stupide qu'ils soient obligés de créer une instance de Post pour pouvoir la rendre dispo, ce qui naturellement ne m'étonnerait pas tant que ça, mais c'est un détail d'implémentation dû à un langage débile, parce que ça n'a ni sens ni intérêt.

Message cité 2 fois
Message édité par masklinn le 29-07-2007 à 14:22:54

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592952
vanadium
N° Atomique : 23
Posté le 29-07-2007 à 14:25:06  profilanswer
 

Masklinn > $this->Post est forcément une instance de la class Post, puisqu'on peut très bien faire :

Code :
  1. $post = $this->Post;
  2. $allPosts =  $post->findAll();


 
On peut pas appeler une méthode d'une classe (Ex: ->findAll()) sans instance de la classe.

Message cité 3 fois
Message édité par vanadium le 29-07-2007 à 14:25:37
n°1592953
vanadium
N° Atomique : 23
Posté le 29-07-2007 à 14:27:03  profilanswer
 

masklinn a écrit :


Edit: à moins naturellement que PHP soit tellement stupide qu'ils soient obligés de créer une instance de Post pour pouvoir la rendre dispo, ce qui naturellement ne m'étonnerait pas tant que ça, mais c'est un détail d'implémentation dû à un langage débile, parce que ça n'a ni sens ni intérêt.


 
Si pour toi créer une instance d'une classe est stupide, arrête la programmation.
 

n°1592955
Je@nb
Kindly give dime
Posté le 29-07-2007 à 14:28:12  profilanswer
 

C'est pas ça qu'il a dit

n°1592957
Kyfun
Les choses se passent !
Posté le 29-07-2007 à 14:30:12  profilanswer
 

vanadium a écrit :

Masklinn > $this->Post est forcément une instance de la class Post, puisqu'on peut très bien faire :

Code :
  1. $post = $this->Post;
  2. $allPosts =  $post->findAll();


 
On peut pas appeler une méthode d'une classe (Ex: ->findAll()) sans instance de la classe.


 
+1, je suis le débat animé et il semble évident que c'est une instance comme l'a montré Vanadium. C'est pareil dans tous les langages non ? Si on veux utiliser une méthode d'une classe... sans instance je vois pas trop comment faire  [:urd]


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
n°1592958
FlorentG
Posté le 29-07-2007 à 14:30:15  profilanswer
 

masklinn a écrit :


Non, tu te retrouves avec une classe à partir de laquelle du crées ou récupères des instances, pas avec une instance [:pingouino]


Sisi, on est bien avec une instance :D

 
masklinn a écrit :

Là encore non, on se retrouve avec une classe, pas avec une instance, $this->Post c'est la classe Post, pas une instance de la classe Post (sur quoi il se baserait pour récupérer des instances de Post, d'abord [:petrus dei])


Je te jure que c'est l'instance. Tout ce qu'il fait, c'est parcourir $uses et lancer les constructeur :

Code :
  1. foreach($uses as $modelClass) {
  2.  [...]
  3.  $model =& new $modelClass($id);
  4.  $this->modelNames[] = $modelClass;
  5.  $this->{$modelClass} =& $model;
  6.  
  7.  [...]
  8. }
 
masklinn a écrit :

Edit: à moins naturellement que PHP soit tellement stupide qu'ils soient obligés de créer une instance de Post pour pouvoir la rendre dispo, ce qui naturellement ne m'étonnerait pas tant que ça, mais c'est un détail d'implémentation dû à un langage débile, parce que ça n'a ni sens ni intérêt.


Héhé, voilà le problème [:joce]

Message cité 1 fois
Message édité par FlorentG le 29-07-2007 à 14:30:47
n°1592960
vanadium
N° Atomique : 23
Posté le 29-07-2007 à 14:35:05  profilanswer
 

Kyfun a écrit :


 
+1, je suis le débat animé et il semble évident que c'est une instance comme l'a montré Vanadium. C'est pareil dans tous les langages non ? Si on veux utiliser une méthode d'une classe... sans instance je vois pas trop comment faire  [:urd]


 
C'est possible, mais il faut que la méthode soit "static". :)
 
Exemple :

Code :
  1. class Maclasse {
  2. public static function methode() {
  3. return null;
  4. }
  5. }


 
Dans ce cas, on peut appeler la méthode "methode" de la classe "Maclasse" comme ceci :

Code :
  1. $var = Maclasse::methode();


 
Par contre :

Code :
  1. class Maclasse {
  2. public function __construct() {
  3. }
  4. public function methode() {
  5. return null;
  6. }
  7. }


 
Impose que l'on appelle "methode" de la classe "Maclasse" de la manière suivante :

Code :
  1. $instance_maclasse = new Maclasse();
  2. $var = $instance_maclasse->methode();


 
J'espère que ces explications pourront en aider certains. :)

Message cité 1 fois
Message édité par vanadium le 29-07-2007 à 14:35:23
n°1592961
Kyfun
Les choses se passent !
Posté le 29-07-2007 à 14:37:50  profilanswer
 

vanadium a écrit :

 

C'est possible, mais il faut que la méthode soit "static". :)

 

...

 

Effectivement ça m'éclaire :D


Message édité par Kyfun le 29-07-2007 à 14:38:10

---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
n°1592966
Skateinmar​s
Posté le 29-07-2007 à 14:50:20  profilanswer
 

C'est le public qui joue non ?
J'ai sous les yeux une methode sans static que je peut appeler sans instancier la classe...


---------------
Feedback HAV
n°1592968
FlorentG
Posté le 29-07-2007 à 14:53:28  profilanswer
 

Skateinmars a écrit :

C'est le public qui joue non ?
J'ai sous les yeux une methode sans static que je peut appeler sans instancier la classe...


PHP4 mon amour. Développe avec ne PHP5 E_Strict, ça t'affichera un warning


Message édité par FlorentG le 29-07-2007 à 14:53:37
n°1592969
Kyfun
Les choses se passent !
Posté le 29-07-2007 à 14:56:49  profilanswer
 

Je sais qu'on est en PHP la, mais ça s'applique aussi au java ça ?


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
n°1592972
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 15:04:50  profilanswer
 

Kyfun a écrit :

Je sais qu'on est en PHP la, mais ça s'applique aussi au java ça ?


Non, une méthode d'instance (non static en java, donc) ne peut s'appeler que sur une instance, ce qui semble par ailleurs logique.
 
Par contre une méthode de classe (static en java peut s'appeler depuis une instance dans la majorité des langages (en restant dans un contexte statique/de classe, donc ça n'a pas grand intérêt)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1592974
masklinn
í dag viðrar vel til loftárása
Posté le 29-07-2007 à 15:32:25  profilanswer
 

vanadium a écrit :

Masklinn > $this->Post est forcément une instance de la class Post, puisqu'on peut très bien faire :

Code :
  1. $post = $this->Post;
  2. $allPosts =  $post->findAll();



J'vois pas le rapport, dans un langage non lobotomisé je peux ballader des classes dans mon programme sans avoir à les instancier...

 

Même en java je peux le faire, c'est dire

 

Exemple en Python:

Code :
  1. # test.py
  2. def bar():
  3.         class Bar(object):
  4.                 pass
  5.         return Bar
  6.  
  7. try:
  8.         # On teste que la classe Bar n'existe bien
  9.         # que dans le contexte de la fonction bar()
  10.         # en tentant de l'instancier
  11.         barInstance = Bar()
  12. except NameError, e:
  13.         # Si c'est le cas, on aura le message suivant
  14.         print "Error,", e, "\n"
  15.  
  16. # On appelle bar(), qui devrait retourner
  17. # une reference vers __la classe__ Bar, pas une instance
  18. # mais la classe meme
  19. barClass = bar()
  20. # On imprime le nom de la classe, et de sa classe à elle parce que c'est marrant
  21. # (en Python les classes sont des instances de metaclasses, la metaclasse
  22. # "type" par defaut, accessoirement "type" est une classe
  23. # normale, a part que c'est une instance d'elle-meme
  24. print barClass.__name__, barClass.__class__, "\n"
  25. # Puis on instancie la classe (en Python il suffit d'appeler
  26. # un objet Classe pour le faire), on devrait obtenir un objet
  27. # de type Bar
  28. barInstance = barClass()
  29. # On regarde si sa classe est bien "Bar"
  30. print barInstance, barInstance.__class__
  31. print "barClass == barInstance.__class__?", barClass == barInstance.__class__


$ python test.py
Error, name 'Bar' is not defined

 

Bar <type 'type'>

 

<__main__.Bar object at 0x00B384F0> <class '__main__.Bar'>
barClass == barInstance.__class__? True


vanadium a écrit :

On peut pas appeler une méthode d'une classe (Ex: ->findAll()) sans instance de la classe.


Heuu si, ça s'appelle justement une méthode de classe, ou classmethod, ou méthode statique [:pingouino]

 

Et justement, pour des méthodes genre findAll pour lesquelles on a absolument aucun besoin des infos contenues dans une instance, c'est complètement logique d'en faire des classmethods

vanadium a écrit :

 

Si pour toi créer une instance d'une classe est stupide, arrête la programmation.

 



Si tu ne sais pas lire, arrêtes de poster.

FlorentG a écrit :

Héhé, voilà le problème [:joce]


PHP, saÿ bon, mangézan [:briseparpaing]

 

Mais effectivement, j'avais oublié qu'en PHP, "->" ne peut être utilisé que pour accéder aux membres d'une instance et pas à ceux d'une classe, ça m'aurait mis la puce à l'oreille, j'ai mal joué sur le coup [:pingouino]

Message cité 1 fois
Message édité par masklinn le 29-07-2007 à 15:34:09

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  29  30  31  ..  62  63  64  65  66  67

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment créer une architecture propre et fonctionelle...[Débutant] Webdesigner a besoin d'aide pour PHP
script PHP style explorateur windowsPHP et MS SQL
[PHP] envoi d'images qui se dimentionne et s'ajoute direct sur 1pageAfficher le temps utilisé pour générer une page PHP
[PHP] connexion bdd différente selon page locale ou sur serveur ?Afficher une image générée par un script PHP dans un PDF ?
Utilisation d'une variable en Flash depuis PHPErreur de forum PHP
Plus de sujets relatifs à : Model View Controller (MVC) - Architecture des applications PHP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)