作者:老王
CakePHP里的Set::extract是个很奇妙的小工具,使用起来相当爽,虽然大部分时候我们不会直接使用它,但是CakePHP里很多地方都能看到它的影子,比如说模型中的generateList方法:
复制内容到剪贴板
代码:
function generateList($conditions = null, $order = null, $limit = null, $keyPath = null, $valuePath = null, $groupPath = null)其中的keyPath和valuePath参数格式就是Set应用的典型。
复制内容到剪贴板
代码:
* @param string $keyPath A string path to the key, i.e. "{n}.Post.id"
* @param string $valuePath A string path to the value, i.e. "{n}.Post.title"简而言之,就是通过Set::extract可以方便的访问数组或者对象的相关数据,这样说可能不是很直观,我再说一个简单的例子:
比如说我们想访问session中保存的User数组
变量,并且echo出键为name的数组元素值,代码大致如下:
复制内容到剪贴板
代码:
$user = $this->Session->read('User');
echo $user['name'];这很直观,也很常见,但是实际上,我们通过查看session实现的
源代码可以发现,Session内部已经加入了Set::extract的功能,所以,上面的代码,其实我们可以简单的写为:
复制内容到剪贴板
代码:
echo $this->Session->read('User.name');怎么样,简单吧。