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. 什麼是C「註冊類」 ++
- 2. 什麼是RMI註冊表
- 3. 什麼是Windows註冊表?
- 4. NSIS:什麼是註冊表?
- 5. 註冊窗口類的目的是什麼?
- 6. 「包緩存」註冊表項的目的是什麼?
- 7. 什麼是Docker註冊表2.0 tls clientcas
- 8. 什麼是GCM註冊ID?
- 9. 什麼是註冊%eiz?
- 10. 什麼是註冊前綴?
- 11. netstandard1.6中的註冊表類; net46項目
- 12. 在facebokk應用頁面上註冊hashkey的目的是什麼
- 13. LocationManager註冊的持久性是什麼
- 14. 什麼是Java中的註冊?
- 15. 什麼是MarkLogic中的註冊查詢
- 16. EaselJS中的註冊點是什麼?
- 17. xmpp中的帶內註冊是什麼?
- 18. linux nasm程序集是什麼(註冊):(註冊)是什麼意思?
- 19. 什麼是註冊爲ServletContextListener的類的生命週期
- 20. 註冊表和註冊表配置單元有什麼區別
- 21. Windows註冊表中的DefaultConnectionSettings值的格式是什麼?
- 22. Java窗口的Windows註冊類是什麼?
- 23. outlook插件的這些註冊表項是什麼意思?
- 24. UnistallString在註冊表中的用途是什麼
- 25. 什麼是谷歌容器註冊表的gcloud API
- 26. 什麼是identityMapCapacity在模式註冊表中的含義
- 27. Winlogon \ LeakTrack註冊表項的用途是什麼?
- 28. 什麼是Windows註冊表項名稱的最大長度?
- 29. 什麼是數據庫的openID和與註冊表
- 30. ClearCase註冊表中的第一行是什麼?
因此註冊表需要靜態調用?或通過一個對象? – 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