Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:60439 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 86061 invoked from network); 3 May 2012 20:42:15 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 May 2012 20:42:15 -0000 Authentication-Results: pb1.pair.com smtp.mail=lester@lsces.co.uk; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=lester@lsces.co.uk; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lsces.co.uk from 213.123.26.188 cause and error) X-PHP-List-Original-Sender: lester@lsces.co.uk X-Host-Fingerprint: 213.123.26.188 c2beaomr10.btconnect.com Received: from [213.123.26.188] ([213.123.26.188:11337] helo=mail.btconnect.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 60/12-08916-5ADE2AF4 for ; Thu, 03 May 2012 16:42:14 -0400 Received: from host81-138-11-136.in-addr.btopenworld.com (EHLO _10.0.0.5_) ([81.138.11.136]) by c2beaomr10.btconnect.com with ESMTP id HGK66750; Thu, 03 May 2012 21:42:10 +0100 (BST) Message-ID: <4FA2EDA1.6020605@lsces.co.uk> Date: Thu, 03 May 2012 21:42:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120312 Firefox/11.0 SeaMonkey/2.8 MIME-Version: 1.0 To: PHP internals References: <4FA23115.9030807@lsces.co.uk> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Mirapoint-IP-Reputation: reputation=Fair-1, source=Queried, refid=tid=0001.0A0B0302.4FA2EDA1.0034, actions=tag X-Junkmail-Premium-Raw: score=7/50, refid=2.7.2:2012.4.24.151515:17:7.944, ip=81.138.11.136, rules=__MOZILLA_MSGID, __HAS_MSGID, __SANE_MSGID, __USER_AGENT, __MIME_VERSION, __TO_MALFORMED_2, __BOUNCE_CHALLENGE_SUBJ, __BOUNCE_NDR_SUBJ_EXEMPT, __CT, __CT_TEXT_PLAIN, __CTE, URI_ENDS_IN_PHP, __ANY_URI, __CP_URI_IN_BODY, BODYTEXTP_SIZE_3000_LESS, BODY_SIZE_2000_2999, __MIME_TEXT_ONLY, RDNS_GENERIC_POOLED, HTML_00_01, HTML_00_10, BODY_SIZE_5000_LESS, RDNS_SUSP_GENERIC, RDNS_SUSP, BODY_SIZE_7000_LESS X-Junkmail-Status: score=10/50, host=c2beaomr10.btconnect.com X-Junkmail-Signature-Raw: score=unknown, refid=str=0001.0A0B020D.4FA2EDA2.0042:SCFSTAT14830815,ss=1,re=-4.000,fgs=0, ip=0.0.0.0, so=2011-07-25 19:15:43, dmn=2011-05-27 18:58:46, mode=multiengine X-Junkmail-IWF: false Subject: Re: [PHP-DEV] [RFC] Allow non-variable arguments to empty() and isset() From: lester@lsces.co.uk (Lester Caine) Patrick ALLAERT wrote: > 2012/5/3 Lester Caine: >> Anthony Ferrara wrote: >>> >>> I voted for the ability to use an expression for isset() as well, >>> since I agree with Ferenc, it's a matter of consistency. Sure, the >>> use-case for isset() is definitely weaker than for empty(), but at the >>> same token they are definitely related... >> >> >> I just can't help feeling that it is the wrong use of both. If the function >> is returning a value, then it's returning a value that needs to be used >> somewhere so the work flow handles that. If the function returns nothing >> instead that just seems wrong and needs to be handled better. I'm used to >> getting back 'false' if the function failed and just check for that so why >> would there be any logical reason for using isset or empty to check a >> function return? > > Use case: > > // Function definition: > function getFriends() > { > // SQL SELECT or Fetching from XML or Fetching from LDAP or ... > return $resultsAsArray; > } > > // Looping on results: > foreach ( getFriends() as $friend ) > { > echo $friend["name"], "\n"; > } > > // Case where the results are actually not iterated: > $amIAssocial = empty( getFriends() ); > > 1. It it not wrong to return "nothing", like empty sets (empty > arrays), it is a valid case. > 2. Returning "false" in the case there is no "results" would be a bad > idea: not only you would have to put a condition in the function > definition, but you would also require all iterations (e.g. foreach) > to be encapsulated in a condition statement to prevent looping on > "false". OK I'm just so used to if( $rs = $this->mDb->query( $query, $bindVars ) ) { while( $row = $rs->fetchRow() ) { } } So I can't see where 'empty( $rs->fetchRow() )' would fit into the work flow ... -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk// Firebird - http://www.firebirdsql.org/index.php