2013-04-24 118 views
0

在index.php裏面我需要在類中使用php方法包含文件。包括使用函數的php文件

我在index.php上多次調用該方法,該方法正在執行include_once或require_once。問題是,我的第一個包含文件,正在創建一些變量,這些變量必須在所有文件,其他包含文件以及index.php文件中看到。 由於我正在使用一種方法來包含文件,因此每個文件上生成的變量僅在函數內部可見。 我不能使用$ this-> var_name,我也不想讓它們成爲全局的。不知道全球是否會有所作爲。我測試了全球,似乎它不工作。 我設法使變量在所有包含的文件中可見,方法是在include方法內使它們變爲靜態的,但我也不能讓它們在index.php文件中可見。

裏面的index.php我有這個

<html> 
<head> 
<?php $this->Import($filemane);?> 
</head> 
<body id="stylef<?php echo $default_font_family ?>" 

和導入方法裏面,我包括$文件名的文件。在$ filename文件中,第一個包含文件,我創建了一些需要在index.php文件中可見的變量($ default_font_family和更多),作爲$ default_font_family和$ css_file不是$ this-> default_font_family或ClassName :: var等在...我必須保持它們爲$ default_font_family。 在index.php上,我也調用Import方法獲取更多文件,並在這些文件中調用第一個包含文件中定義的變量作爲$ default_font_family,而不是$ this - > $ default_font_family。 我發現的唯一解決方案是在Import方法中將靜態變量創建爲靜態,這樣我可以在所有包含的文件中將它們看作$ default_font_family。有沒有更簡單的方法呢? 我無法設法使變量在index.php文件中可見。我收到了index.php文件中的未定義變量:default_font_family。 任何解決方案?

回答

0

如果您在正確的位置使用全局關鍵字,globals應該可以工作。 但我們討厭全局變量,不是嗎?

您可以使用靜態方法和類的屬性。

class MyClass { 
public static $test = false; 

public static function getTestVal() { 
    return self::$test; 
} 

    public static function setTestVal($value) { 
    self::$test = $value; 
} 


} 

在此之後,您可以通過MyClass的:: $測試訪問$測試

的2個功能時並不需要,如果你的$測試是公開的,但如果你想讓它私有的,你可以使用get和set函數。 MyClass :: getTestVal(); MyClass :: setTestVal(true);

+0

主要問題是我不能在任何文件中使用$ this-> var或ClassName :: var,我必須找到一種方法來查看php變量,這些變量在第一個包含文件中創建,如$ var 謝謝你的想法 – user1628151 2013-04-24 09:41:04

+0

「他的主要問題是我不能使用$ this-> var或ClassName :: var裏面的任何文件」 爲什麼? 首先包含類文件,您不應該爲它創建對象。靜態變量是類變量,所以你可以在任何地方使用它。 – vaso123 2013-04-24 10:54:07