PHP & Golang 函数多值返回比较

    之前(由于太鸡冻而写的心得记录,看了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,这里都是根据实际应用场景来提交并投票决定是否开发的。希望她越来越好,为什么不呢?




本文来自:开源中国博客

感谢作者:LXRM

查看原文:PHP & Golang 函数多值返回比较

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。