2010-08-08 82 views
2

我是PHP OOP概念中的新人。第一件引起我注意的事情是,我不能在腳本開始時寫一次php腳本給多個類。我的意思是PHP僅包含外部類一次

<?php 
include 'var.php'; 
class userSession{ 
    /* all the code */ 
    public function getVariables(){ 
    /* use of variables which are inside var.php */ 
    } 
    public function getOtherVariables(){ 
    /* use of variables which are inside var.php */ 
    } 
} 
?> 

這是行不通的。

我不得不這樣做 -

<?php 
    class userSession{ 
     /* all the code */ 
     public function getVariables(){ 
     include 'var.php'; 
     /* use of variables which are inside var.php */ 
     } 
     public function getOtherVariables(){ 
     include 'var.php'; 
     /* use of variables which are inside var.php */ 
     } 
    } 
    ?> 

什麼我失蹤?

+0

var.php的內容是什麼。 – 2010-08-08 11:13:50

+1

在第一個示例中,您將var.php的內容包含在全局空間中。 在第二個示例中,您將var.php的內容包含在您類的方法的本地空間中。 你究竟想在這裏做什麼? – 2010-08-08 11:15:19

+0

假設只有兩個變量。 '<?php $ var1 =「hello」; $ VAR2 = 「世界」; ?> – 2010-08-08 11:15:39

回答

4

如果這些變量在全局空間中定義的,那麼你需要在你的類方法中引用它們在全球空間:

include 'var.php'; 
class userSession{ 
    /* all the code */ 
    public function getVariables(){ 
    global $var1, $var2; 
    echo $var1,' ',$var2,'<br />'; 
    $var1 = 'Goodbye' 
    } 
    public function getOtherVariables(){ 
    global $var1, $var2; 
    echo $var1,' ',$var2,'<br />'; 
    } 
} 

$test = new userSession(); 
$test->getVariables(); 
$test->getOtherVariables(); 

這不是一個好主意。全局變量的使用通常是不好的做法,並且表明您還沒有真正理解OOP的原理。

在你的第二個例子,你定義變量在局部空間的各個方法

class userSession{ 
    /* all the code */ 
    public function getVariables(){ 
    include 'var.php'; 
    echo $var1,' ',$var2,'<br />'; 
    $var1 = 'Goodbye' 
    } 
    public function getOtherVariables(){ 
    include 'var.php'; 
    echo $var1,' ',$var2,'<br />'; 
    } 
} 

$test = new userSession(); 
$test->getVariables(); 
$test->getOtherVariables(); 

因爲每個變量是本地方法空間內獨立定義,在getVariables改變$ VAR1()沒有

class userSession{ 
    include 'var.php'; 
    /* all the code */ 
    public function getVariables(){ 
    echo $this->var1,' ',$this->var2,'<br />'; 
    $this->var1 = 'Goodbye' 
    } 
    public function getOtherVariables(){ 
    echo $this->var1,' ',$this->var2,'<br />'; 
    } 
} 

$test = new userSession(); 
$test->getVariables(); 
$test->getOtherVariables(); 

此:在($ VAR1在getOtherVariables)

第三種方法是定義你的變量類的屬性影響將變量定義爲userClass空間中的屬性,因此它們可以通過userClass實例中的所有方法訪問。請注意使用$ this-> var1而不是$ var1來訪問屬性。如果有多個userClass實例,則每個實例中的屬性可能不同,但在每個實例中,屬性在該實例的所有方法中都是一致的。

+1

上有很多關於它的資源,我得到第三個選擇的解析錯誤(意外的T_INCLUDE)。 :( – Dian 2011-05-02 06:32:15