之前(由于太鸡冻而写的心得记录,《看了Go Lang 的一点介绍, 我心动了》),当时被Go语言的多值返回的便利性感动到流涕,因为这个特性确实给予了我们太多的方便和实惠,所以说Go语言是如此的紧贴工程实践呢。而PHP虽然在语言上并没有直接支持多只返回,但是却提供了一个语言结构这样的奇葩存在来赋值。
在php中,类似的语法需要 array配合 list 这个语言结构来实现。 点击这里查看官方手册对list 的用法说明。
官方是这样描述list的用途的:
array list ( mixed
$varname
[, mixed$...
] )<像 array() 一样,这不是真正的函数,而是语言结构。list() 用一步操作给一组变量进行赋值。
废话不多说,举个栗子:
<?php //e.g (1) list($succ, $code, $data) = array(true, 0, array(1,2,3)); //$succ : true //$code : 0 //$data : array(1,2,3)
上面的例子,很简单,就是把array的每一个元素一次性赋值给list里面的变量。
回到这篇文章的开头,和Go语言相比,PHP如何实现多值返回呢?相信如果看到这里的你,也应该清楚了。:-D,如果非要我来个栗子,好吧,上代码:
<?php //假如我们查数据库,获取用户信息 function get_user_info($uid){ //some code get userinfo from db. try{ $userinfo = Db::get_one(array('uid'=>$uid)); $result = array(true, 0, $userinfo); } catch (\Exception $e){ $result = array(false, $e->getCode(), $e->getMessage()); } return $result; } list($succ, $code , $data) = get_user_info(20); if ($succ){ //some thing var_dump($data); }else{ Logger::writeErrorLog($data,$code); echo $data;//error message }
各种语言都有自己的特点,虽说没有go语言那么简洁,但终究是也是一个比较方便的设施。随着PHP不断的演变,我们开发也随之改变,其实这句话是错误的!因为PHP始终遵循着最佳实践的路子在往前走,所以才有了语言特性的变化,有精力的可以去看看PHP特性RFC,这里都是根据实际应用场景来提交并投票决定是否开发的。希望她越来越好,为什么不呢?
有疑问加站长微信联系(非本文作者)