2013-02-13 87 views
0

我有一個網站,它使用庫文件lib.client.php存儲在我的標準網站根目錄下的php文件夾中,幷包含一系列我已構建的類。__自動加載和包含文件

我將不得不在require_once這個庫文件在幾乎每一個頁面,我可以實現這個最好的方式是什麼?此外,我是否應該使用__autoload來實現這個功能的一些組合?

看到一個非常類似的問題,涉及到這個問題,但提供了一個非常具體的答案,我不能真正使用,並且在__autoload函數中查找了一下,我想爲我的要求得到更詳細的答案。

+0

自動加載機只對加載類有意義。通常在類和文件之間有1:1映射。否則,您需要具有類文件映射/緩存的智能解析器。如果你有一個只包含功能的腳本,這不是一個選項。 – mario 2013-02-13 00:55:10

+0

那麼你會建議我分手我的文件嗎? – 2013-02-13 01:01:29

+0

如果有效,爲什麼改變它?如果代碼庫足夠小以保持連貫性,那麼不會。但是'__autoload'然後只需要'require_once'那個文件,否則失敗的未知類。這是比簡單地使用require_once本身更多的代碼。 – mario 2013-02-13 01:05:37

回答

1

您使用__autoload(或更好:spl_autoload_register;甚至更好:自動加載一些別人寫的),如果:

  • 您有在不同的文件不同的順序使用許多類;
  • 類分散在許多文件中;
  • 有一個嚴格的方法來告訴哪個類在哪個文件中。

你的情況:只要使用require_once(或重構,但我不會打擾)。

+0

在'__autoload'上使用'spl_autoload_register'的主要原因是什麼? – 2013-02-13 01:02:42

+0

你可以spl_autoload_register許多功能,你只能有一個__autoload。使用原始的__autoload可能會碰到一些有自己的自動加載方案的庫。 – fdreger 2013-02-13 01:08:36