[英]Why my Registry pattern implementation not working?
我想念什么嗎? 還是我誤解了這個概念?
根據我對注冊表設計模式的當前了解,文件test.php應該打印名稱“ MIH406”,但事實並非如此! 為什么?
首先,我訪問了index.php頁面,然后訪問了test.php頁面。
這樣工作嗎?
我想了解注冊表背后的概念,無論它被認為是好是壞,因此,無需在此重新討論此模式的優劣。謝謝。
注意:我正在使用Ubuntu和LAMP在我的PC下對其進行測試
這是我的簡單實現:
的index.php
<?php
require_once "registry.php";
Registry::getInstance()->set("name", "MIH1406");
?>
test.php
<?php
require_once "registry.php";
echo Registry::getInstance()->get("name");
?>
Registry.php
<?php
class Registry
{
private static $_instance = null;
private $_registry = array();
public static function getInstance()
{
if(self::$_instance == null)
{
self::$_instance = new Registry();
}
return self::$_instance;
}
public function set($key, $value)
{
$this->_registry[$key] = $value;
}
public function get($key, $default = null)
{
if(!isset($this->_registry[$key]))
{
return $default;
}
return $this->_registry[$key];
}
private function __construct()
{
}
private function __clone()
{
}
}
?>
因為您沒有為內部變量設置值。
在set()
: $this->registry[$key] = $value;
意味着您必須擁有屬性$ registry,但是您擁有private $_registry = array();
。 因此,也許是錯字,但$ registry!= $ _registry
使用您編輯的代碼,這對我有用。 您需要依賴地包括文件。
index.php:
<?php
include 'registry.php';
Registry::getInstance()->set("name", "MIH1406");
?>
test.php
<?php
include 'index.php';
echo Registry::getInstance()->get("name");
?>
然后運行test.php
輸出: MIH1406
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.