2
A
回答
2
直接從http://www.phppatterns.com/docs/design/the_registry
註冊表提供了一個很好的管理方式在全球存儲數據,幫助防止全球危機的機制。
基本上,它意味着註冊表是一個地方,您可以在全局範圍內存儲您需要的變量/對象,而不會污染應用程序的全局名稱空間。它本身與MVC無關,但許多MVC框架也使用註冊表模式。
它可以讓你店一個變量在一個地方,檢索它在另一個地方,而不必訴諸於各種複雜的程序或魔法的檢索您的變量。
以Zend Framework爲例,創建一個Zend_Navigation對象並將其存儲在Zend_Registry的引導程序中。稍後,您可以輕鬆地從註冊表中的控制器或其他類中的一箇中檢索它。
0
Registry Class更像是數據持有者對象加載器等。您可以將數據添加到控制器中的註冊表並從視圖中獲取它。 一個小例子。
Class Registry
{
protected $data = array();
private $loadClasses;
public function getData($name){
return isset($this->data[$name])?$this->data[$name]:null;
}
public function setData($name,$value)
{
$this->data[$name] = $value;
}
public function addData($name,$value)
{
$this->data[$name][] = $value;
}
public function &singletonLoad($class)
{
if(isset($this->loadClasses[$class]))
{
return $this->loadClasses[$class] ;
}
if(class_exists($class))
{
return $this->loadClasses[$class] = new $class();
}else
{
return false;
}
}
}
class AController extends Controller
{
public function indexAction()
{
$this->registsry->setData('name','John') ;
}
}
class AView extends View
{
public function getName()
{
return $this->registsry->getData('name') ;
}
}
相關問題
- 1. NSIS:什麼是註冊表?
- 2. 什麼是RMI註冊表
- 3. 註冊窗口類的目的是什麼?
- 4. 什麼是GCM註冊ID?
- 5. 什麼是註冊前綴?
- 6. 什麼是註冊%eiz?
- 7. netstandard1.6中的註冊表類; net46項目
- 8. 什麼是Java中的註冊?
- 9. EaselJS中的註冊點是什麼?
- 10. 什麼是註冊爲ServletContextListener的類的生命週期
- 11. 註冊表和註冊表配置單元有什麼區別
- 12. Windows註冊表中的DefaultConnectionSettings值的格式是什麼?
- 13. Java窗口的Windows註冊類是什麼?
- 14. 什麼是谷歌容器註冊表的gcloud API
- 15. 什麼是Windows註冊表項名稱的最大長度?
- 16. 爲什麼stdarg.h中的第一個arg是註冊表?
- 17. 什麼是identityMapCapacity在模式註冊表中的含義
- 18. 什麼是使IDE選項卡MRU分類的Visual Studio註冊表設置?
- 19. 註冊狀態是什麼意思?
- 20. RAX註冊名稱是什麼?
- 21. 什麼是創造登錄/註冊
- 22. 什麼谷歌註冊編號是
- 23. 注入SVG的目的是什麼?
- 24. @命名註釋的目的是什麼
- 25. DLL和註冊表有什麼問題?
- 26. 什麼?意味着在註冊表值?
- 27. 投票腳本(註冊和未註冊用戶)的最佳做法是什麼?
- 28. MvvmLight消息 - 註冊和取消註冊消息的正確方法是什麼?
- 29. 什麼是真實的方式知道域名是否註冊?
- 30. outlook(2003)msgfile擴展的註冊表值代表什麼?
因此註冊表需要靜態調用?或通過一個對象? – Eli 2012-04-11 07:19:54
大多數註冊表實現都是靜態的。例如,Zend_Registry :: get()和Zend_Registry :: set()。 – ChrisR 2012-04-11 07:23:16
不要僅僅因爲Zend使用靜態註冊表,Zend甚至不接近成爲良好開發標準的支柱。相反,將狀態傳遞給你的MVC對象。這允許您在單個執行中使用多個註冊表(或狀態對象)。另外,沒有靜態測試可以更好地處理。 – kingmaple 2012-04-11 07:49:37