請問一下關於function及class

edited 十月 2013 in PHP新手區
我是PHP新手 原本比較常接觸視窗程式方面
想請問一下 假設我有x.php及y.php兩個php檔
那在x.php內寫的function及class生命週期是否只在x.php內
如果想要在y.php是否只能將function及class另外寫一個php用include的方式
或者是有不一樣的方法

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1894

評論

  • edited 七月 2006
    目前只能用 include 的方式, class 的話,可以用 __autoload 函式來載入。
    請看 http://tw.php.net/manual/en/language.oop5.autoload.php
  • edited 七月 2006
    在 y.php 中加一句 include x.php; 等於把 x.php 和 y.php 結合在一起成一個較大的 php 檔案, 所以 x.php 中的 variables, functions 和 classes 都可以在 y.php 中使用.
  • edited 七月 2006
    zzlong 寫道:
    在 y.php 中加一句 include x.php; 等於把 x.php 和 y.php 結合在一起成一個較大的 php 檔案, 所以 x.php 中的 variables, functions 和 classes 都可以在 y.php 中使用.

    那想請問一下 如果在x.php內有定義一個$sum的變數
    又在y.php內定義一個$sum的變數 那 include x.php的話$sum這個變數會不會有問題?
  • edited 七月 2006
    PHP 並沒有定義變數的指令,變數可以直接拿來使用。

    這個問題還分成兩種情況:
    1. $sum 是區域變數:這種情況就互不影響。
    2. $sum 是全域變數:
    假設在 y.php 裡面的變數如果你有作初始化,而且 x.php 內的函數或是物件並沒有不檢查就使用的話,是沒有關係的。
    但個人還是不建議這麼用。
  • edited 八月 2006
    PHP 跟很多 scripting languages 一樣, 變量無需在使用前宣告 (declare).

    PHP 的 scope rule 很簡單, 在 function 和 class 之外的全部是 global, 在 function 和 class 之內的全部是 local.

    至於 function 和 class 本身一定是 global (class 中的 function 當然仍然是 local, 這是 OO 的原則).

    在 function 中要存取 global variables 的話, 必須在使用前宣告: global $x, 否則使用的時候系統會把 $x 當作一個新的 local variable.

    至於 class 的情況則跟 Java 很相似, 變量種類和變化比較多, 使用前也必須宣告.

    在 y.php 中 include x.php, x.php 使用的變量是 local 還是 global? 要視乎 include x.php 這一句在甚麼地方, 這一句在 function 以外的話, x.php 中的變量都是 global, 這一句在 function 之內的話, x.php 中的變量都是 local.

    想像一下把 x.php 坎入 y.php 之內便明白了.

    詳細的描述可以看看 PHP 的 scope rule
Sign In or Register to comment.