Nouveau sujet Répondre Imprimer Syndication RSS 2.0

[SDK] Fonction userdata

Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 31 Octobre 2007, 14:44
Hello,

J'ai inclue le sdk sur mon site mais je ne parvient pas à utiliser la fonction userdata.

J'arrive à faire :

$id_membre_courant = Fsb::$session->data['u_id'];


Mais si je mets :

$id_membre_courant = userdata('u_id');


J'ai le message d'erreur :

Fatal error: Call to undefined function userdata()


Pourtant elle y est cette fonction dans le sdk :loupe:


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 31 Octobre 2007, 14:56
C'est pas une fonction mais une méthode ;)

$id_membre_courant = $fsb->userdata('u_id');


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Etoile
Avatar de BlackJowy
  • Age : 22 ans
  • Messages : 3459
  • Inscrit : 01 Mars 2007
  Lien vers ce message 31 Octobre 2007, 15:02
C'est de l'objet, donc il te faut une instance de la classe Fsb_Sdk ^^


"It's backup day today so I'm pissed off. Being the BOFH, however, does have it's advantages. I reassign null to be the tape device — it's so much more economical on my time as I don't have to keep getting up to change tapes every 5 minutes. And it speeds up backups too, so it can't be all bad can it? Of course not." S.Travaglia

 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 31 Octobre 2007, 16:22
ok ok c'est une instance de la class Fsb_sdk ...

Haa la poo ... un jour peut être.

Merci ;)


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
Message édité 1 fois, dernière édition par Spark, 02 Novembre 2007, 9:49     Lien vers ce message 02 Novembre 2007, 9:44
Au final quel différence il y a entre

Fsb::$session->data['u_id'];

et
$fsb->userdata('u_id');


Fonctionnellement aucune. Mais dans la pratique dans la solution 2 on fait appel à une class de plus non ?

Pareil pour :

Fsb::$session->is_logged;

et
$fsb->is_logged();


Fsb::$session->logout();

et
$fsb->logout();


S'pas très économe tout ça :D

Au fait BlackJowy j'vais t'apprendre un truc :p , on a pas besoin de faire une instance de la classe Fsb_Sdk, c'est déjà fait en bas de sdk.php :p


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Equipe des MODS
Avatar de Fabogranqi
  • Age : 19 ans
  • Messages : 3095
  • Inscrit : 29 Décembre 2004
  Lien vers ce message 02 Novembre 2007, 9:53
Euh j'ai pas beaucoup fais de POO sous PHP, donc peut-être que dans ce cas je me trompe, mais en principe on doit JAMAIS accéder aux données membres de cette façon "Fsb::$session->is_logged;", ou comme ça "Fsb::$session->data['u_id'];", on DOIT utilisé les fonctions membres pour les récupérer.
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 02 Novembre 2007, 10:03
Pourquoi ? :D


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Volcan
Avatar de Sékiltoyai
  • Age : 20 ans
  • Messages : 1033
  • Inscrit : 19 Septembre 2006
Message édité 2 fois, dernière édition par Sékiltoyai, 02 Novembre 2007, 10:34     Lien vers ce message 02 Novembre 2007, 10:33

Fonctionnellement aucune. Mais dans la pratique dans la solution 2 on fait appel à une class de plus non ?

Dans le code de FSB, à ce que je viens d'en voir, tu as une classe statique FSB qui stocke toutes les variables à globaliser en temps qu'attributs statiques.
Donc au lieu, comme dans une classe normale, de devoir initialiser un objet pour y stocker les propriétés, ici, on stocke des propriétés relatives à la classe et non à un objet précis, ce qui fait que tu peux y accéder de partout sans trimbaler une variable globale.
Les attributs stockés dans cette classe sont des objets donc utilisables comme dans l'ancienne organisation.

Pour l'accès aux variables, l'avantage de passer par les méthodes d'accès, c'est que dans Fsb_model, tu passes par le code de gestion associé aux variables, ce code comprend des trucs du style :
if (property_exists($this, $property))
{
	return ($this->$property);
}
return (NULL);

Ce qui veut dire que si tu te trompes de nom ou bien s'il y a des attributs qui changent de nom de version en version, tu ne provoques pas une erreur PHP et tu ne paralyses qu'un module, et encore, avec une gestion de la valeur de retour ( un test de nulité sur la valeur de retour ), tu peux parfaitement traiter les erreurs.


http://www.phpfrance.com : Support francophone PHP et Web.
http://sekil.labrute.fr/
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 02 Novembre 2007, 13:15
Euh j'ai pas beaucoup fais de POO sous PHP, donc peut-être que dans ce cas je me trompe, mais en principe on doit JAMAIS accéder aux données membres de cette façon "Fsb::$session->is_logged;", ou comme ça "Fsb::$session->data['u_id'];", on DOIT utilisé les fonctions membres pour les récupérer.


Faux... Tu peux y acceder aux propriétés "public", car elle sont... publiques =)

(Celui qui me sort "Car dans public, tout est public", il sera bien gentil de sortir vite fait...)

En fait, c'ets juste pour indiquer q'il y a un moyen d'acceder à cete fameuse propriété, et, aussi, eviter de se taper le Fsb::$session->truc =D


 
Equipe des MODS
Avatar de Fabogranqi
  • Age : 19 ans
  • Messages : 3095
  • Inscrit : 29 Décembre 2004
Message édité 1 fois, dernière édition par Fabogranqi, 02 Novembre 2007, 13:48     Lien vers ce message 02 Novembre 2007, 13:48
T'as rien compris, bien ur qu'on peut y accéder parce que c'est public, c'est juste que ça se fait pas. C'est comme être impoli, on peut être impoli mais ça se fait pas !
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 02 Novembre 2007, 14:42
Ben, ne quoi ca se fait pas... Geno l'utilise bien, lui =D


 
Etoile
Avatar de BlackJowy
  • Age : 22 ans
  • Messages : 3459
  • Inscrit : 01 Mars 2007
Message édité 1 fois, dernière édition par BlackJowy, 02 Novembre 2007, 14:45     Lien vers ce message 02 Novembre 2007, 14:44
Oui, théoriquement tous les attributs d'une classe doivent être privés... et être accesibles uniquement via des méthodes publiques elles (get_machin() et set_machin()

Du moins c'est ce qu'il faudrait faire pour respecter le principe de l'encapsulation...

Après faire un accesseur et un mutateur pour chaque attribut, c'est relou, donc c'est vite tentant de rendre tous les attributs publiques ^^


"It's backup day today so I'm pissed off. Being the BOFH, however, does have it's advantages. I reassign null to be the tape device — it's so much more economical on my time as I don't have to keep getting up to change tapes every 5 minutes. And it speeds up backups too, so it can't be all bad can it? Of course not." S.Travaglia

 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 02 Novembre 2007, 15:18
D'ou les __get et __set, qui, eux, sont bien utiles... Mais après c'est vite le dawa =D


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 02 Novembre 2007, 23:05
Si public existe c'est pas pour rien :=)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Sékiltoyai
  • Age : 20 ans
  • Messages : 1033
  • Inscrit : 19 Septembre 2006
  Lien vers ce message 02 Novembre 2007, 23:09
Ouais mais si tu mets des attributs publiques, ce n'est pas forcément utile de fournir un code pour accéder à ceux ci…


http://www.phpfrance.com : Support francophone PHP et Web.
http://sekil.labrute.fr/
 
Répondre


.