我想要一個包含所有文件的類。在一個方法中包含文件?
例如。
Loader::loadZend // loads all zend libraries
Loader::loadSymfony // loads all symfony components
如果我在方法中包含一個文件,這是否成爲全局可用?
它似乎不起作用。
也許我做錯了什麼,或者有沒有解決方法?
感謝
我想要一個包含所有文件的類。在一個方法中包含文件?
例如。
Loader::loadZend // loads all zend libraries
Loader::loadSymfony // loads all symfony components
如果我在方法中包含一個文件,這是否成爲全局可用?
它似乎不起作用。
也許我做錯了什麼,或者有沒有解決方法?
感謝
從http://uk.php.net/manual/en/function.include.php(重點礦山)
當包括一個文件,它包含的代碼繼承在其上包括髮生線的可變範圍。任何變量在調用文件中的該行處可用,將在被調用文件中可用,從該點開始。但是,包含文件中定義的所有功能和類別的全局範圍爲。
有加載所有類的Zend,Symfony的或任何一次是一個壞主意裝載機。兩者都有自己的自動加載器,所以你需要做的就是使包含路徑的庫可用,然後使用框架自帶的自動加載器。
如果你只是在另一個類中包含一個類,它只能在你插入include的類中使用。
所以解決方案是創建一個自動加載器,它自動包含demmand所需的類。這裏有您需要的信息:
http://php.net/manual/es/language.oop5.autoload.php
這是PHP5 OOP的基本編程。
編輯
查看您對文件的查詢。都不是。該文件(要通過php函數處理)只能在被調用/使用的函數內部使用,而不能在整個應用程序/網站中全局使用。
是啊即時通訊使用spl_autoload,但我感興趣的知道,如果這個功能將工作'內'方法。如果我不使用autoload,只是一個普通的include,那麼這個方法包含的文件是否可用於全局範圍內的所有代碼? – 2010-05-07 17:08:52
定期包含它只會影響包含它的類。戈登釘了它。 – Dez 2010-05-07 17:10:52
如果沒有定義全局作用域變量,則應該沒問題。否則,全局變量將會丟失。
例如,
a.php:
<?php
$a = "global a";
class c {
public $b = "member b";
}
?>
b.php
<?php
function inc() {
include 'a.php';
}
inc();
echo $a;
$class = new c;
echo $class->b;
?>
如果運行b.php,你會發現一個$消失和C類或任何功能仍然可用。
我想你被誤解了(或者我誤解了你所複製的閱讀)我想調用一個包含文件的函數。該方法包含的文件是否可用於全局範圍內的所有代碼? – 2010-05-07 17:07:01
@fayer像上面說的那樣:如果你包含一個文件,文件中的變量只能在調用函數中使用,而文件中的函數和類將是全局可用的。 – Gordon 2010-05-07 17:09:02
好的,然後....那麼我想我只是使用spl_autoload_register。謝謝。 – 2010-05-07 17:11:23