Bonjour,
Peu habitué encore au fonctionnement du PHP Objet et de l'extension des classes, je suis un peu étonné par ce que m'affiche un écho d'une variable.
Il s'agit de code figurant dans OBM.
1er morceau de code :
$feature["auth"] valant 'OBM_Challenge_Auth', la variable $auth est donc appelée à recevoir une instance de la classe OBM_Challenge_Auth.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $auth=new$feature["auth"]; $auth->start();
C'est bien ça ?
2ème morceau de code :
La classe OBM_Challenge_Auth "étend" la classe Auth. Ca veut bien dire que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class OBM_Challenge_Auth extends Auth { var $lifetime = 86400; var $magic = "Simsalabim"; // Challenge seed var $database_class = "DB_OBM"; var $database_table = "UserObm";
- La classe OBM_Challenge_Auth récupère les propriétés et fonctions de la classe Auth ?
- Si des fonctions et propriétés de OBM_Challenge_Auth existent aussi dans Auth, ce sont celles de OBM_Challenge_Auth qui sont utilisées ?
3ème morceau de code :
On voit que $lifetime existe à la fois dans Auth (valeur 0) et dans OBM_Challenge_Auth (valeur 86400). $lifetime devrait bien être initialisée avec la valeur 86400 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Auth { var $lifetime = 0; // Auth lifetime (seconds, 0=never expires) var $refresh = 0;
4ème morceau de code :
Cette fonction start() est dans la classe Auth mais pas dans OBM_Challenge_Auth.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function start() { $cl = $this->cancel_login; global $obm, $$cl, $lifetime; //echo "<br>***AUTH-start - obm_uid=$obm[uid]"; // OBM : We set the auth lifetime with the global session lifetime (if set) // It is not set at the login (cause page_open before session_load_global) if ($lifetime) $this->lifetime = $lifetime;
Si je mets un echo $lifetime avant ou après la dernière ligne, rien ne s'affiche !
Ne devrait-il pas s'afficher la valeur de $lifetime, soit 86400 ?
Partager