php清空一个变量,php – 变量清空直到重新分配

我不太确定为什么会这样,或者如何正确解释它,但也许有人可以对此有所了解.

我有一个基于CodeIgniter / Opencart框架的CMS系统,它使用注册表,控制器和模块.我遇到过一个我以前将变量保存到注册表的场景:

$this->application_page = 'current/page';

但出于某种原因,当我在应用程序中调用它时:

echo empty($this->application_page)?'yes':'no';

//Returns Yes

但是..当我重新分配时:

echo empty($this->application_page)?'yes':'no';

//Returns Yes

$page = $this->application_page;

echo empty($page)?'yes':'no';

//Returns No

var_dump返回:

var_dump($this->application_page);

string 'current/page' (length=12)

我可以通过使用$page轻松解决这个问题,但我很想知道为什么会发生这种情况?

更新:

所以我搞砸了_isset函数,但没有让它工作,可能是我的错误,可能不是..以下是它们如何一起工作:

class Registry {

private $data = array();

public function get($key){ return (isset($this->data[$key]) ? $this->data[$key] : NULL); }

public function set($key,$val){ $this->data[$key] = $val;

}

abstract class Controller {

protected $registry;

public function __construct($registry){ $this->registry = $registry; }

public function __get($key){ return $this->registry->get($key); }

public function __set($key,$value){ $this->registry->set($key, $value); }

}

class Applications {

private $registry;

function __construct($Registry){ $this->registry = $Registry; }

function __get($key){ return $this->registry->get($key); }

function __set($key,$val){ return $this->registry->set($key,$val); }

public function buildApplication(){

$this->application_page = 'current/page';

$application = new application($this->registry);

}

}

class Application extends Controller {

public function index(){

echo empty($this->application_page)?'yes':'no';

//Returns Yes

$page = $this->application_page;

echo empty($page)?'yes':'no';

//Returns No

}

}

希望这有帮助吗?

有一个错字,注册表的功能不是魔术方法.还在应用程序中声明了$registry.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值