2016-10-24 42 views
-1

PHP中是否有一些全局對象,其中所有的方法,變量,對象,函數...(所有PHP thinds)都在鋪設? JavaScript中的這種對象稱爲窗口。PHP中是否有一些全局對象(如JavaScript中的窗口對象)?

我想了解PHP編程究竟是什麼。例如,JavaScript編程(據我所知)是用BOM樹的葉子對象進行的操作 - 「你正在取一個物料單的一個葉對象,然後你正在對這個葉對象做一些事情,並且你正在保存導致BOM的另一個葉對象「

我想了解我正在處理的數據結構。例如,如果我寫$ x = 10; - 變量已創建。它鋪設在哪裏?它必須連接到某個對象。

+0

不,它不是 –

+0

JavaScript中不一定有窗口對象。 –

+1

不,它沒有。它在任何*範圍內。當你寫'$ x = 10'時,你可以通過'$ x'來訪問這個變量。沒有其他隱式的'window [$ x]'。沒有必要。 – deceze

回答

0

我會嘗試給你一個關於PHP範圍的小遊覽。

與每種程序語言完全相同。您只能在其執行範圍內訪問var。

案例1:

function bar() { 
    $x = 10; // $x can be used in bar function only 
} 

案例2:

class foo() { 
    private $x; 

    //$x can be used in every foo class methods by using $this->$x 

} 

案例3:

class Foo() { 
    public $x; 
    //$x $foo = new Foo(); $foo->x; 
    // **everywhere = everywhere you are including the file which defines Foo class 
    public static $y; 
    //$y can be used everywhere by using : Foo::y 
} 

並完成,您可以定義全局。從任何地方訪問:

define("X", "something"); 

希望它給你一個更好的想法是什麼是PHP變量。

PS:JavaScript中的窗口對象不是一個「定義了所有方法,變量,對象,函數......」的對象。它只是一個管理瀏覽器選項卡的一些東西的對象。

+0

*「與所有語言一樣......只在執行範圍內......」* *咳嗽咳嗽* [動態範圍](https://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scope_vs._dynamic_scope)*咳嗽咳嗽* - 'private'和'public'實際上並沒有很大關係,但是具有* visibility *,這是一個單獨的概念。 - 'define()'沒有定義「全局變量」,它定義了**常量**,但它有些不同。 – deceze

+0

另外,'public $ x'不能被'Foo :: x'訪問。 – deceze

+0

同意你的說法,對不起,我沒有太多時間來解釋什麼是變數..因爲你定義的這些信息常量也是全局變量:http://php.net/manual/en/language.constants.php但是,它是不變的。 –