2016-09-09 54 views
0

我使用adLDAP插件(並非真正相關),並且有一個標準的PHP類。在這個類裏面有2個受保護的變量(管理員用戶和管理員密碼)。在PHP類中聲明受保護的變量,使用外部變量

我需要使用parse_ini_file加載的.ini文件中的數據聲明這兩個變量。我該怎麼做呢?我無法讓它工作。例如:

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

爲什麼你需要從外面辦呢?將ini解析器放入方法或構造函數中並在其中設置值。或爲他們提供setter/getters。 –

+0

只要它是永久性的,每當我給班級打電話時我都不需要聲明用戶/密碼,我很高興 - 只要它從.ini文件中獲取內部或外部無關緊要。我對PHP類的知識很少:-) –

回答

1

使用setter方法是這樣的:

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'); 

如果您不能修改類,使用遺產:

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

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

或者兩者皆是傳承和setter ...或者只需繼承並讀取構造函數中的配置:

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

然後調用新的類,它應該是自動初始化:

$myInstance = new myClass(); 
+0

謝謝!我想,我已經想出了這個方法,但我希望它是永久的,所以我不需要每次打電話給課程時都這樣做。那可能嗎? –

+0

您可以繼承該類,並讀取構造函數中的設置。我將添加示例。 –

+0

謝謝!那麼我是否需要調用myClass或someClass? –