请告诉我我在哪里做错了......
我有3节课。这些都是这样的。。
- 我遵循单例设计模式的单例类
- 类公羊
- 山姆班
在“ram”类中,我正在为单例类对象设置数据。
现在,在“sam”类中。我正在尝试访问 sam 类的 show_data() 函数中的单例类对象。
什么时候,我用..
Print_r($this) : showing empty object
但是,当我使用以下代码时..
$singleton_obj = Singleton::getInstance();
print_r($singleton_obj); : Showing content of singleton object
我的问题是, 为什么在Print_r($this)的情况下它显示的是空对象。有什么办法,我可以使用Print_r($this)获取单例类对象的内容。
我的课程文件是这个..
<?php
class Singleton
{
// A static property to hold the single instance of the class
private static $instance;
// The constructor is private so that outside code cannot instantiate
public function __construct() { }
// All code that needs to get and instance of the class should call
// this function like so: $db = Database::getInstance();
public function getInstance()
{
// If there is no instance, create one
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Block the clone method
private function __clone() {}
// Function for inserting data to object
public function insertData($param, $element)
{
$this->{$param} = $element;
}
}
//---CLASS ram---
class ram
{
function __construct()
{
$db = Singleton::getInstance();
$db->insertData('name', 'Suresh');
}
}
$obj_ram = new ram;
//---CLASS sam---
class sam extends Singleton
{
function __construct()
{
parent::__construct();
}
public function show_data()
{
echo "<br>Data in current object<br>";
print_r($this);
echo "<br><br>Data in singleton object<br>";
$singleton_obj = Singleton::getInstance();
print_r($singleton_obj);
}
}
$obj_sam = new sam;
echo $obj_sam->show_data();
?>