Recuperer la valeur d'une variable

Mammouth du PHP | 725 Messages

07 mars 2013, 02:52

Bonjour,

J'ai une class de verification de la date de naissance valid ou non, je mets une variable "day_check" selon les cas, comment puis-je recuprer cette valeur lors de l'appel de ma class, la mettre dans une variable sans l'afficher?
    public function checkDay() {
        if(empty($this->day) OR ($this->day > 31))
        {
            $day_check = 'DayNotValid';
        }
        elseif(($this->day > 29) && ($this->month == 02))
        {
            $day_check = 'Daybad29';
        }
        else
        {
            $day_check = 'DayValid';
        }
        
        $this->day_check = $day_check;
        echo 'check day '.$this->day_check.'<br />';
    } // end function checkDay($this->day)

// ici la recuperer et la mettre en variable
// $x = la valeur de day_check
merci a vous

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 mars 2013, 10:06

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 571 Messages

07 mars 2013, 12:52

bonjour,
à mon avis tu as 2 possibilités pour récuper la variable:
1/la méthode checkDay() doit retourner la variable $day_check:
    public function checkDay() {
   //.....
   return     $day_check;
}
pour la mettre dans une variable lors de l'appel de classe:
$var=$class->checkDay();
2/l'autre possibilité est de declarer $day_chek comme attribut de la classe et lui définir un getter et un setter.Puis à l’intérieur de la méthode checkDay() faire appel à setDayCheck pour affecter la nouvelle variable(selon ou non la validité de la date).à l’extérieur de la classe on appelle directement getDaych() pour récupérer la valeur.

Mammouth du PHP | 725 Messages

08 mars 2013, 17:02

merci yann18 ca marche :)

Mammouth du PHP | 725 Messages

09 mars 2013, 09:55

desole de retourner sur le meme sujet, j'ai cree une autre fonction de vaidation du mois:

    public function checkDay() {
        if(empty($this->day) OR ($this->day > 31))
        {
            $day_check = 'DayNotValid';
        }
        elseif(($this->day > 29) && ($this->month == 02))
        {
            $day_check = 'Daybad29';
        }
        else
        {
            $day_check = 'DayValid';
        }
       
        $this->day_check = $day_check;
        echo 'check day '.$this->day_check.'<br />';
    } // end function checkDay($this->day)


// check the month
    public function checkMonth() {
        echo $this->day;
    if(($this->day > 30) && (!in_array($this->month, $this->mw31d)))
        {
            $month_check = 'Monthbad31';
        }
        else
        {
            $month_check = 'MonthValid';
        }
            
        $this->month_check = $month_check;
        
        return $this->month_check;
    } // end function checkMonth($this->month)
et je recois cette erreur:

Code : Tout sélectionner

PHP Catchable fatal error: Object of class DOBD could not be converted to string in class_checkDOBD.php on line 54
la ligne 54:
        echo $this->day;
dans ce cas je peux verifier si un mois peut contenir 31 jours ou non

merci a vous

Eléphant du PHP | 120 Messages

09 mars 2013, 12:41

Et quel est le type de $this->day?

D'ailleurs je te conseille de ne pas écrire 02 pour dire 2. 02 est une notation en base 8 et non pas en base 10. Que ça marche dans ton cas, est un hasard, car entre 0 et 7, la base 8 correspond à la base 10.
echo 010; // 8
Si tu veux un nombre en base 10, ne mets pas de 0 devant.

Mammouth du PHP | 725 Messages

09 mars 2013, 16:49

$this->day ici c'est un objet,on doit le convertir en string, en local ca marche, mais sur le serveur ca marche pas

Eléphant du PHP | 120 Messages

09 mars 2013, 17:54

Faut-il vraiment te tirer les vers du nez ? Quoi comme objet ? Comment se fait-il que tu compares un objet avec un nombre ? La classe en question implémente-elle __toString() ? :roll:

Mammouth du PHP | 725 Messages

10 mars 2013, 15:45

Comment l'implementer ici:
public function checkDay() {

}

public function __toString()
    {
        return $this->day;
    }

public function checkMonth() {
elseif(($this->day > 30) && (!in_array($this->month, $this->mw31d)))
}
au lieu de this-day comment implementer ma fonction __toString