2016-09-09 1 views
0

J'utilise le plugin adLDAP (pas vraiment pertinent), et il y a une classe PHP standard. Dans cette classe, il y a 2 variables protégées (utilisateur admin et mot de passe administrateur).Déclarer la variable protégée dans la classe PHP avec une variable de l'extérieur

Je dois déclarer ces deux variables avec des données provenant d'un fichier .ini, que je charge avec parse_ini_file. Comment puis-je faire cela? Je n'arrive pas à le faire marcher. Exemple:

$ini_array = parse_ini_file("somefile"); 
// username comes like $ini_array["php_value ad.username"] 
class someClass { 
    protected $adminUSER = ""; 
    protected $adminPW = ""; 
} 
+0

pourquoi avez-vous besoin de le faire de l'extérieur? Placez l'analyseur ini à l'intérieur d'une méthode ou du constructeur et définissez-y les valeurs. ou les fournisseurs de setters/getters pour eux. –

+0

Tant qu'il est permanent et je n'ai pas à déclarer utilisateur/mot de passe chaque fois que j'appelle la classe, je suis heureux - à l'intérieur ou à l'extérieur n'a pas d'importance, tant qu'il le prend du fichier .ini. Mes connaissances sur les cours PHP sont assez petites :-) –

Répondre

1

Utilisez setters de cette façon:

class someClass 
{ 
    protected $adminUSER = ""; 
    protected $adminPW = ""; 

    public function setAdminUser($adminUser) 
    { 
     $this->adminUSER = $adminUser ; 
    } 

    public function setAdminPw($adminPW) 
    { 
     $this->adminPW= $adminPW; 
    } 
} 

$classInstance = new someClass(); 
$classInstance->setAdminUser('AdminUser'); 
$classInstance->setAdminPw('AdminPw'); 

Et si vous ne pouvez pas modifier votre classe, utiliser le patrimoine:

class myClass extends someClass 
{ 
    public function __construct($adminUser, $adminPW) 
    { 
     $this->adminUSER = $adminUser ; 
     $this->adminPW= $adminPW; 
    } 
} 

$myInstance = new myClass('UserAdmin', 'Password); 

Ou le patrimoine et setters ... Ou il suffit d'hériter et de lire la configuration dans le constructeur:

class myClass extends someClass 
{ 
    public function __construct() 
    { 
     $ini_array = parse_ini_file("somefile"); 
     $this->adminUSER = $ini_array['adminUser'] ; 
     $this->adminPW= $ini_array['adminPassword']; 
    } 
} 

appeler Ensuite, votre nouvelle classe, il devrait être auto-initialisé:

$myInstance = new myClass(); 
+0

Merci! Je pense, j'ai compris cette méthode, mais je voudrais que ce soit permanent, donc je n'ai pas besoin de le faire chaque fois que j'appelle la classe. Est-ce possible? –

+0

Vous pouvez hériter de la classe et lire les paramètres dans le constructeur. Je vais ajouter l'exemple. –

+0

Merci! Aurai-je besoin d'appeler myClass ou someClass? –