2012-06-25 33 views
0

新的網站。有一個快速的問題。PHP將對象加載到一個文件中以便於訪問

它是安全的或需要時在一個文件來調用加載的對象,如:

objects.php

<?php 
require 'autoload.php'; 

//create global objects 
$obj = new Object(); 
$obj2 = new User(); 
$obj = new Bus(); 
?> 

的header.php

<?php 
require 'objects.php'; 

echo 'Hello ' . $obj2->getName(); 
?> 

在此先感謝。

+0

安全取決於你預計的威脅是什麼。高效?只有當你最終使用所有這些對象。 –

+0

我建議你看看自動加載(http://php.net/manual/en/language.oop5.autoload.php),並只實例化你要在主程序中使用的對象。 – jeroen

回答

1

只有在需要時才能實例化對象。創建對象需要一些時間和一些內存。您還希望能夠確切地知道當您回來稍後改變某些內容時,在您的任何給定執行點使用哪些對象。

如果你實例化一堆你不需要的對象,你將不可避免地發現自己想要做出改變,但不得不花時間弄清楚你是否已經使用$ obj2或者是否安全地開始使用它在第350行。如果你沒有更具描述地命名你的對象,你也會發現你將重用變量名,當你的對象沒有按照你期望的方式行事時,這會引起混淆。例如,在你的代碼中,$ obj是一個總線,而不是一個對象。如果你期待一個物體,你會感到困惑。

+0

謝謝我同意它會更聰明,我的方法是一個懶惰的實現,但有沒有在一個文件中創建所有對象的任何形式的安全威脅或利用。 –

+0

安全威脅?如果您的腳本比使用更多的時間和內存,那麼您的服務器將更容易使用DDOS。不過,真正的威脅在於你的時間和錯誤列表,以及其他人看到你的代碼,而不是你的服務器安全。 –

+0

再次感謝斯科特,非常有幫助。 –

0

如果你不需要該對象,那麼你不應該加載它。不過,我猜你正在嘗試創建一些全球性的信息存儲,而且我會假設你需要這種方式。有人說這是一個更好的主意,使用靜態對象,所以你不會遇到範圍問題。

靜態對象通常不會得到實例化,而且只會像使用:

User::setName('Bob'); 
echo 'Hello ' . User::getName(); 
相關問題