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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 $auth=new$feature["auth"];

$auth->start();
$feature["auth"] valant 'OBM_Challenge_Auth', la variable $auth est donc appelée à recevoir une instance de la classe OBM_Challenge_Auth.
C'est bien ça ?

2ème morceau de code :
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 "étend" la classe Auth. Ca veut bien dire que :
- 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 :
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;
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 ?

4ème morceau de code :
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;
Cette fonction start() est dans la classe Auth mais pas dans OBM_Challenge_Auth.
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 ?