La Pause Café du Forum Programmation

__autoload, dès qu’il y a des perfs en jeu, c’est le mal.
:hello:

C’est que je voudrais bien, mais je sais déjà pas ce qu’est une classe en PHP. :ane:
en java, le chargeur de classe charge les classes de puis un chemin défini (le classpath) en fonction de tes droits (le séruritymanager).

Le classLoader va charger La classe lors de sa première utilisation (pour la création d’une instance de cette classe par ex.) et garde ensuite les classes en mémoire pour réutilisation (l’optimisation de Sans-Nom se situe sans doute là).

Euh en PHP, tu mets une classe par fichier, comme en Java.
Ce que propose le mécanisme d’autoload, c’est d’essayer de t’inclure une classe si tu l’instancies, même si il n’y a aucun include qui s’y réfère.
En fait tu définies une fonction __autoload qui prend en paramètre un nom de classe et tu lui renvoies le nom du fichier à inclure (par exemple ‘mes_classes/’.$nom.’.php’).

Le problème, c’est que l’opération a un coût très élevé, il vaut largement mieux passer par des include si il y a un enjeu niveau performances.

Sinon, dans le cas normal, la classe est lue par l’interprêteur lorsqu’il arrive à y accéder, c’est à dire qu’il a les droits en lecture sur le fichier lors de ton include (c’est à cette étape que tu es averti des “parse error” ou autre). Jusqu’à ce que tu l’instancies dans ton code, il va juste se souvenir que ta classe existe. Une fois que tu voudras instancier un objer, il te créera l’objet en se référant à la définition qu’il a trouvée plus haut.

Du coup, un class loader en php, c’est pas top niveau performances, même si ça peut être pratique.

En java tu peux mettre pluseurs classes par fichier.
Mais forcément, elles ne sont pas accessible de l’extérieur. (enfin j’me comprend)

Mandarounet>merci pour les infos, :jap: j’ai regardé un peu PHP, en fait la grosse différence avec Java, c’est qu’en Java, on ne connaît pas du tout les fichier, juste les objets Class (d’autant que c’est compilé), et donc on charge réellement les classe qu’on garde en mémoire pour tout le monde, donc on ne perd du temps qu’au démarrage du serveur.
jmgchouchou>:oui, mais pour être précis, on peut soit mettre des classes privates inaccessibles dans le même fichier que la classe publique, soit mettre des inner classes qui peuvent être publique et accessible de l’extérieur. (exemple java.util.Map.Entry) et il y a aussi les classes anonymes.

Je voudrais vérifier la véracité de ma logique de tests pour mon script de connexion… merci par avance pour vos avis les kupaings ^^

On check si le nom, le pass et une ID de guilde (vouais car tu peux te connecter que si t’appartiens à une guilde dans mon truc) sont définis (enfin les variables passées par POST)
connexion à la base, si ca marche pas > échec :smiley:
sinon (là je reprends le code de php.net pour les mysql_real_escape_string

La requête est la suivante : sélectionner ID joueur, ID Guilde et Rang dans la table joueur, où le nom est like $_POST[pseudo], ID guilde = post[IDG] et password = md5($_POST[password])

Si tout ca donne un résultat, alors on passe des variables dans la session :

idj, idg, rank, un hash (md5(user agent + remote addr) et lastactive ( time() ).

Sinon : go fuck yourself :smiley:

Après faudra à chaque chargement de page que je check si les valeurs contenues dans la session sont bonnes (idg idj, password) == ce que j’ai dans la BDD, et que lastactive est pas plus vieux que 15 minutes.

Ca vous semble bon ?

okay chef :smiley:

Sinon j’ai le droit de faire session_start sur chaque page, où faut faire autrement ? diantre, que de questions aujourd’hui :slight_smile:

Comprennais pas pourquoi ca marchait pas… finalement trouvé :

"Timestamp of the start of the request is available in $_SERVER[‘REQUEST_TIME’] since PHP 5.1. "

J’ai un PHP un peu plus vieux que ca :smiley:

Tu dois faire appel à session_start() dans toutes les pages via lesquels tes visiteurs utilisent la session (enfin “pour lesquels tu te sers d’une session”). Sinon, un visiteur passant sur une page (un script) où aucun appel à session_start() n’est effectué a désormais perdu sa session.

Ok, bon ben nickel alors, j’ai cru qu’il fallait faire autrement à un moment et que j’avais employé une méthode caca :smiley:

Sinon toujours dans un soucis de faire original, et étant grandement inspiré par notre camarade et son alert($amalibu), j’ai nommé certaines variables de session liées à la connexion et aux autorisations d’accès… $sarko, $pasqua… ce genre de choses :ane:

pas forcèment si session.auto_start est activé :neutre:

Oui, exact :jap: (en plus j’y pensais en composant le post)

Hello
Rendez vous à 22h sur stunradio.com pour ma première [:shy]

:hello:

Je veux me commander ca
Mais ya vraiment pas bcp de site qui le vende, vous savez pourquoi ? Clubic ne le reference pas non plus meme si ils ont fait une news dessus en janvier

Tain trop chaud de lire le forum en stage !
J’ai mauvaise conscience, preuve que ce que je fais est intéressant… fin bref, pour l’histoire d’une classe par fichier, en php non plus c’est pas interdit d’en mettre plusieurs… mais bon, c’est pas super clair quoi… et puis y a pas de différence de droits d’accès (vu qu’en php toutes les classes sont “publiques”).

Sinon, est-ce que l’un d’entre vous aurait des cours sur les arbres ? Faut que je révise pour mon concours et j’me souviens plus trop des rotations et de tout ce qui y touche… :confused:

moi j’sais pas mais j’prends l’antenne dans 10 minutes… si ça marche :paf:

C’est quand même énorme le SAV des émissions :smiley:

up (pour Sans-Nom) :slight_smile:

Up, enfin down, je vais au lit :smiley:

Bn les loutres :wink:

Pff, TP d’SQL : faire qu’une application Vidéothèque (en Java) utilise une base de données Oracle pour s’alimenter.
Ca serait simple (quelques SELECT, un DELETE, un INSERT et un UPDATE et puis basta) mais nan : l’application est codée avec des pieds restés en 1.4 et, AMHA, mal organisée (sans parler de la documentation) : résultat je passe plus de temps à modifier du Java existant qu’à mettre en pratique les fonctions SQL de Java apprises en cours :grrr:

BN à tous :slight_smile: