thinkphp 控制器unset删除对象变量失败。。
今儿开发过程中发现 tp是unset 变量失败。。具体代码
foreach( $this->menu as $k => $v){
    if(0 == $v['flag'])
         unset($this->menu[$k]);
}
逻辑很简单。。但是居然没过滤掉menu里面的值。。
一番折腾后发现居然是 TP 底层重写了 __set __get 造成的 具体代码
public function __construct()
{
//实例化视图类
$this->view = Think::instance('View');
//控制器初始化
if(method_exists($this,'_initialize'))
$this->_initialize();
}
public function __set($name,$value) {
$this->view->assign($name,$value);
}
public function __get($name) {
return $this->view->get($name);
}
具体就类似这种
class af{
   public $v =array();
   function __construct(){
   }
   function __set($k , $v){
      echo "set".$k;
      $this->v[$k] = $v;
   }
   function __get($k){
      echo "get".$k;
      return $this->v[$k];
   }
}
class a extends af{
    function __construct(){
       parent::__construct();
    }
    function t(){
         $this->aaa = array(1=>array(),3=>array(1,2), 2=>array(4,5,7));
         foreach($this->a as $k=>$v){
                if($k ==1){
                   unset($this->a[$k]);
                }
         }
         print_r($this->a);
    }
}
$aaa = new a();
$aaa->t();
希望能帮到以后碰到这个BUG的朋友。。
thinkphp 控制器unset删除对象变量失败。。的更多相关文章
- php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen)
		
php面试题7(1.unset变量是删除栈变量,并不删除堆变量)(2.php爬虫特别简单: 可以file_get_contents和直接fopen) 一.总结 1.unset变量是删除栈变量,并不删除 ...
 - js delete删除对象属性,delete删除不了变量及原型链中的变量
		
js delete删除对象属性,delete删除不了变量及原型链中的变量 一.delete删除对象属性 function fun(){ this.name = 'gg'; } var obj = ne ...
 - ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程
		
ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...
 - Linux 添加环境变量和删除环境变量
		
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如PATH.在交叉编译中,会经常运用到环境变量的设置. 在linux中,查看当前全部的环境变量的命令式env. 当然也 ...
 - kubernetes命令式容器应用编排/部署应用/探查应用详情/部署service对象/扩缩容/修改删除对象
		
部署Pod应用 创建delpoyment控制器对象 [root@master ~]# kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 ...
 - linux设置和删除环境变量
		
删除环境变量: unset -v PKG_CONFIG_PATH 添加环境变量: export PKG_CONFIG_PATH="你需要设置的路径", 例如: export LAN ...
 - JS中delete删除对象属性
		
1.删除对象属性 function fun(){ this.name = 'mm'; } var obj = new fun(); console.log(obj.name);//mm ...
 - Ubuntu下实用命令收集   --新增  删除   环境变量
		
1. 关闭防火墙: sudo ufw disable 2. 设置IPV4地址和网关: ifconfig eth0 up %s netmask %s route del default gw 192.1 ...
 - ThinkPHP控制器
		
ThinkPHP控制器Controller 1.什么是控制器 在MVC框架中,其核心就是C(Controller)控制器.主要用于接收用户请求,处理业务逻辑. 2.控制器的定义 在一个ThinkPHP ...
 
随机推荐
- 正则表达式-----------------------------------C#的正则表达式
			
为了避免以后这样的情况,在此记录下正则表达式的一些基本使用方法附带小的实例.让以后在使用时能一目了然知道他的使用,为开发节约时间,同时也分享给大家 正则元字符 在说正则表达式之前我们先来看看通配符,我 ...
 - (原)在firefly_rk3288开发板上解决openGL在设置32位色深以后出现花屏的问题
			
转载请注明出处:http://www.cnblogs.com/lihaiping/p/5567141.html 在做openGL测试的过程中,根据论坛上的帖子,在使用/bin/fbset -a -no ...
 - CI框架 -- 网页缓存
			
CodeIgniter 可以让你通过缓存页面来达到更好的性能. 尽管 CodeIgniter 已经相当高效了,但是网页中的动态内容.主机的内存 CPU 和数据库读取速度等因素直接影响了网页的加载速度. ...
 - js获取网页的url文件名( 例如index.aspx),js获取url的参数(例如获取 ?cid=joeylee的值),给jquery拓展方法
			
<script type="text/javascript"> var JsRequest={ //这就是一个静态类,类里面有2个静态方法 //方法一:获取url的 ...
 - IntelliJ IDEA 的 .idea 目录加入.gitignore无效的解决方法
			
[转载] 无效的原因是:对应的目录或者文件已经被git跟踪,此时再加入.gitignore后就无效了, 解决办法: 先执行 [文件夹] git rm -r --cached .idea [文件] ...
 - spark  LinearRegression 预测缺失字段的值
			
最近在做金融科技建模的时候,字段里面很多缺少值得时候,模型对于新用户的预测会出现很大的不稳定,即PSI较大的情况. 虽然我们依据字段IV值得大小不断的在调整字段且开发新变量,但是很多IV值很大的字段直 ...
 - 安卓开发笔记——关于AsyncTask的使用
			
在安卓开发中,我们经常要进行一些耗时操作,比如数据库操作,获取网络资源,读取内存文件等等,当我们在处理这些耗时操作的时候,如果我们直接在UI主线程进行,那么可能会导致阻塞UI主线程,使得UI界面卡顿, ...
 - Java编程思想学习笔记——初始化与清理(二)
			
成员初始化 Java尽力保证:所有变量在使用前都能得到适当的初始化. 方法的局部变量:未初始化,编译错误. void f(){ int i; // System.out.println(i);//编译 ...
 - flashfxp v3.7 注册码
			
-------- FlashFXP Registration Data START --------FLASHFXPvwBW1S4QvwAAAAC5W5MNJwXnsl73i3CxcVAAvAyagF ...
 - Adobe超分辨率算法:SRNTT
			
论文:Image Super-Resolution by Neural Texture Transfer 论文链接:https://arxiv.org/abs/1903.00834 项目地址:http ...