2012-10-25 63 views
0

我有一個類...PHP類範圍:類沒有見過的包含文件中

class myclass {} 
$myclass = new myclass(); 
$myclass->frigin = 'awesome'; 

後來在一個不同 PHP文件,我有一些包括...

include('hippie_deflectors.php'); 

但是,包含的PHP根本沒有看到$myclass

讓PHP服從的最簡單方法是什麼?


此文件... .com/[module]/requested_page.php

...有兩個包括過濾器向下以下頂部至底部...

包括設置1


.com/system/header.php

.com/system/header_classes.php [$myclass在這裏被定義]

包括設置2


.com/[module]/index_get.php

.com/system/template_1.php

.com/system/includes_js.php

.com/system/scripts/onload.js [$myclass undefined here]

+1

哈哈嬉皮士。你是什​​麼意思'不看'?如果你實例化一個myclass對象,你會得到一個錯誤嗎? –

+0

你能發佈確切的錯誤,也許hippie_deflectors.php的代碼?如果它是一個試圖查看$ myclass的類,那麼它需要成爲全局的。 – Ray

+0

請發佈[SSCCE](http://sscce.org/),以便我們可以正確診斷此問題。 – BryanH

回答

0

你的問題有點理解。但是,這將工作:

文件:File1.php

class myclass {} 
$myclass->frigin = 'awesome'; 
include('hippie_deflectors.php'); 

文件:hippie_deflectors.php

include('different_file.php'); 

文件:different_file.php

var_dump($myclass); 

會打印:

object(stdClass)#1 (1) { ["frigin"]=> string(7) "awesome" } 

這是你的設置嗎?

+0

PHP包含在不在與聲明類相同的PHP文件中。 – John

+0

這些包含就像您將它張貼在與該類相同的代碼塊中一樣。將PHP類文件和PHP文件考慮爲包含在更高的PHP文件中(includes-> included-class,includes- [dif directory] ​​ - > included-PHP-file)。 – John

+0

-1這段代碼如何在不實例化類的情況下工作?你的打印給出了一個'stdClass'的實例,而類是一種'myclass'! – JvdBerg

0

我意識到我的錯誤,希望別人會從中學習。雖然我遇到了範圍問題(一個PHP文件包含另一個,然後只能通過將其作爲參數傳遞給函數來訪問類),但我最終意識到JavaScript文件是以字符串形式輸出的,而不是作爲包括!這意味着JavaScript文件將使瀏覽器發出第二個請求,其中只有該文件將被PHP解析。

視覺...

  • 客戶端請求[字符串JavaScript文件輸出腳本元素]
  • 客戶端接收頁面的結果。
  • 客戶端請求腳本文件。
  • PHP解析的腳本文件秒/單獨請求

值得慶幸的是,因爲我編程的東西是高度模塊化的,我能夠聲明類,創建它的一個新的副本,然後包括一個模塊化的PHP文件不包括整個類,但較小但更普遍我需要的大量變量。

這並不解決單獨但相關的問題,其中類只能在包含X數量的包含中訪問,然後您必須將它們作爲參數傳遞給函數。