2010-04-11 52 views
0

我有一些瓦爾外部文件,要求在我的PHP類,並分享那些與我的類的所有功能:Require_once外部VAR和分享這些與其他funcions在PHP類

vars.inc:

<?php 
$a = 1; 
?> 

class.php:

<?php 
class A{ 
    public function __construct(){ 
    require_once("vars.inc"); 
    } 
    public function aB{ 
    echo $a; 
    } 
} 
?> 

,但它不工作:$的一個變種是不確定的

我該怎麼辦?

感謝所有

回答

1

在函數的變量只存在於局部範圍內,除非你將它們分配給類變量。

例如,如果你有這個在您的網頁包括:

<?php 
$myvariable = 'hello'; 
?> 

那麼你的類應該使用$this將其分配到一個類變量。

myvariable = $ myvariable; } 公共功能aB {0} $ echo $ myvariable; } } ?>

約變量範圍的更多信息,請參見manual

+0

謝謝,它的工作原理,但是我們必須檢索var trough $ this-> var。嗨! – frx08 2010-04-11 18:44:46

0

這是一個範圍問題。也許這會更好:

<?php 
class A{ 
    protect $a; 
    public function __construct(){ 
    require_once("vars.inc"); 
    $this->a = $a; 

    } 
    public function aB{ 
    echo $this->a; 
    } 
} 
?> 
+0

-1。這不僅不起作用(在__construct()發生後$ a會消失),但它鼓勵使用全局變量。包含的頁面繼承了它所包含的範圍,除非您在包含的頁面中定義函數,在這種情況下函數是全局函數。另外,不需要降低我的評論。 – 2010-04-11 18:03:08

+0

你很快就會暈倒。如果你會等待,你會看到我擴大我的答案,並提供一個更好的選擇。 – 2010-04-11 18:04:24

+0

但你最初的代碼是錯誤的。當你在__construct中需要時,它就成爲構造的局部變量。爲了您的第一個代碼工作,vars.inc文件將不得不在課程之外 – AntonioCS 2010-04-11 18:15:43

0

這通常是一個不好的做法。通過構造函數或方法將變量提供給類,或創建一個包含變量或全局可訪問變量的Static類,該類將保存這些值。這取決於你的代碼,正是你想要做的。