php框架返回值,关于TP框架里面F方法返回值的问题

代码其实很简单,我从数据库中读取数据出来然后用F方法缓存到文件,文件建立了也有数据写入,但是F方法返回的是NULL,百思不得其解。

public function updateCache(){$db = M('category');$data = $db->select();$f = F('data',$data)var_dump($f);//输出的是null}

其实我就是想利用F方法的返回值做个判断我缓存成功...这是我的目的...但我找了半天问题也不知道为何F方法返回的是NULL。

回复讨论(解决方案)

不应该的!贴出你的 F 函数定义

不应该的!贴出你的 F 函数定义

就是TP框架最新版的F函数...老大

你不能贴出来吗?还要我去下载一个?

你不能贴出来吗?还要我去下载一个?

function F($name, $value='', $path=DATA_PATH) { static $_cache = array(); $filename = $path . $name . '.php'; if ('' !== $value) { if (is_null($value)) { // 删除缓存 if(false !== strpos($name,'*')){ return false; // TODO }else{ unset($_cache[$name]); return Think\Storage::unlink($filename,'F'); } } else { Think\Storage::put($filename,serialize($value),'F'); // 缓存数据 $_cache[$name] = $value; return ; } } // 获取缓存数据 if (isset($_cache[$name])) return $_cache[$name]; if (Think\Storage::has($filename,'F')){ $value = unserialize(Think\Storage::read($filename,'F')); $_cache[$name] = $value; } else { $value = false; } return $value;}

F函数读取缓存会返回数据,写入缓存当然返回null啦

想要数据?$data = F('data');

F函数读取缓存会返回数据,写入缓存当然返回null啦

想要数据?$data = F('data');

public function put($filename,$content,$type=''){ $dir = dirname($filename); if(!is_dir($dir)) mkdir($dir,0755,true); if(false === file_put_contents($filename,$content)){ E(L('_STORAGE_WRITE_ERROR_').':'.$filename); }else{ $this->contents[$filename]=$content; return true; } }

这是调用的Put方法 应该成功了是返回true的啊

17行 return ;

空返回是不对的!他们太粗心了

按低版本的返回,应写作

return strlen($value);

17行 return ;

空返回是不对的!他们太粗心了

按低版本的返回,应写作

return strlen($value);

老大我按你写的修改以后返回的也还是null 是为什么

8 行 return false; // TODO

11 行 return Think\Storage::unlink($filename,'F');

17 行 return

22 行 return $_cache[$name]

29 行 return $value;

不就这几处返回吗?你根据你传入的参数,手工推导一下不就知道问题出在哪里了?

8 行 return false; // TODO

11 行 return Think\Storage::unlink($filename,'F');

17 行 return

22 行 return $_cache[$name]

29 行 return $value;

不就这几处返回吗?你根据你传入的参数,手工推导一下不就知道问题出在哪里了?

strlen返回Null的原因是$value是数组

Think\Storage::put($filename,serialize($value),'F');返回的是true

我觉得应该直接return Think\Storage::put($filename,serialize($value),'F');这样修改 可以吗

8 行 return false; // TODO

11 行 return Think\Storage::unlink($filename,'F');

17 行 return

22 行 return $_cache[$name]

29 行 return $value;

不就这几处返回吗?你根据你传入的参数,手工推导一下不就知道问题出在哪里了?

看官方的函数好像意思就是缓存成功就是返回空值...

你直接返回 $value 就可以

不过 $value 中可能有很多内容,而你并不需要

所以这样返回也可以 return ! empty($value);

既然是写缓存,那么 $value 表示的就是写入的内容

非空表示成功

总之返回什么要根据你已有的算法决定

TP 只是工具,这能让他来适应你,而不是你去迁就他

你直接返回 $value 就可以

不过 $value 中可能有很多内容,而你并不需要

所以这样返回也可以 return ! empty($value);

既然是写缓存,那么 $value 表示的就是写入的内容

非空表示成功

总之返回什么要根据你已有的算法决定

TP 只是工具,这能让他来适应你,而不是你去迁就他

嗯用框架的时候总感觉写的人跟我想的不一样 老大说得对 受教了!谢谢!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值