Problème de manipulation en POO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de manipulation en POO

Re: Problème de manipulation en POO

par damien01 » 02 déc. 2011, 23:12

Ok, merci pour tes conseils. :)

Re: Problème de manipulation en POO

par xTG » 02 déc. 2011, 22:39

Tu tentes donc de faire une classe statique ?
http://php.net/manual/fr/language.oop5.static.php

Regardes aussi du côté du design patern "Singleton", cela devrait correspondre à ce que tu recherches : un Getter statique qui instancie l'objet une seule fois et le retourne

Problème de manipulation en POO

par damien01 » 02 déc. 2011, 21:18

Bonsoir,

J'ai créé une classe Init() qui me permet d'initialiser un ensemble d'éléments tels que l'adresse mail du serveur, le path du fichier de log, ou encore le path des fichiers php.
J'appelle cette classe au tout début de mon fichier index.php.
Dans ce dernier, si je créé un objet de la sorte:
$var = new Init(); 

Puis j'appel une méthode:
$var->getLogLevel();
Cela fonctionnera, seulement j'aimerais pouvoir récupérer la valeur de mon $logLevel sans créé d'objet, comme ceci:
Init::getLogLevel();


En faisant cela j'obtiens cette erreur: "Using $this when not in object context"
Pourriez vous me donner des conseils pour cela fonctionne.

Voici ma classe Init:
class Init{
    
    private $emailserver;
    
    private $logpath;
    
    private $loglevel;

     /**
     * path des fichiers
     */
    private $classpath =array(
        'Membre' => '/membre.class.php',
        'Webmaster' => '/webmaster.class.php',
        'Connexion' => '/connexion.class.php',
        'Tools' => '/tools.class.php',
        'Mail' => '/mail.class.php',
        'Debug' => '/debug.class.php');   
    
    public function __construct() {
        /*
	Respect du standard UTF8
         */
        header('Content-Type: text/html; charset=UTF-8');
        mb_internal_encoding("UTF-8");// indique d'utiliser l'encodage UTF-8
        
        $this->emailserver = "[email protected]";
        $this->logpath = 'c:\log.log';
        $this->loglevel = 1;
        /**
        * Activation des sessions
        **/
        session_start();
    }
    
    //getter
    public function getClassPass(){
        return $this->classpath;
    }
    public function GetClassPath($class){
        return $this->classpath[$class];
    }
    public function getEmailServer(){
        return $this->emailserver;
    }
    public function getLogPath(){
        return $this->logpath;
    }
    public function getLogLevel(){
        return $this->loglevel;
    }
    
    //setter
    public function setEmailServer($email){
        $this->includeClassPath("Mail");
        if(Mail::isMail($email)){
            $this->emailserver = $email;
        }
    }
    public function setGetLogPath($logpath){
        if(is_string($logpath)){
            $this->logpath = $logpath;
        }        
    }
    public function setGetLogLevel($loglevel){
        if(is_int($loglevel)){
            $this->loglevel = $loglevel;
        }
    }
    
    public function includeClassPath($class){
        if(array_key_exists($class, $this->classpath)){
            require_once (dirname(__FILE__) . $this->classpath[$class]);            
        }        
    }
    public function includeAllClassPath(){
        while (list(, $value) = each($this->classpath)) {
            require_once (dirname(__FILE__) .  $value );
        }
    }
    public function showAllClassPath(){
        while (list(, $value) = each($this->classpath)) {
            echo dirname(__FILE__) .  $value . '<br />';
        }
    }
}
Je suis également à l'écoute de vos critiques sur mon code ou si vous avez des conseils à me donner.
Etant débutant en programmation en objet je me doute que je dois faire des bêtises.

Bonne soirée.

Damien B.