Interestingly enough, I've been browsing the source of Symfony some more and found even they can't decide which is better: array_key_exists or isset - so they use both at different levels :P
From: http://trac.symfony-project.org/browser/branches/1.3/lib/request/sfWebRequest.class.php 764 /** 765 * Returns the value of a GET parameter. 766 * 767 * @param string $name The GET parameter name 768 * @param string $default The default value 769 * 770 * @return string The GET parameter value 771 */ 772 public function getGetParameter($name, $default = null) 773 { 774 if (isset($this->getParameters[$name])) 775 { 776 return $this->getParameters[$name]; 777 } 778 else 779 { 780 return sfToolkit::getArrayValueForPath($this->getParameters, $name, $default); 781 } 782 } <3 PHP - consistently inconsistent! :D ~ C PS: I hate ppl who reply to their own messages! :P -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Cliff Black Sent: Thursday, 17 September 2009 9:42 a.m. To: [email protected] Subject: [phpug] Re: PHP 5.3.0 error You beat me to it Sid :) Symfony definitely doesn't use the @ suppression operator. The method appears in a lot of classes - sfRequest, sfDatabase, but they all are just shortcuts for $sfParameterHolder->get(). Here's the source.... (File: sfParameterHolder.class.php, line 43) /** * Retrieves a parameter. * * @param string $name A parameter name * @param mixed $default A default parameter value * * @return mixed A parameter value, if the parameter exists, otherwise null */ public function & get($name, $default = null) { if (array_key_exists($name, $this->parameters)) { $value = & $this->parameters[$name]; } else { $value = sfToolkit::getArrayValueForPath($this->parameters, $name, $default); } return $value; } So you can clearly see, there is no @ operators. The 'if statement' is a longer way of writing a ternary - both have exactly the same effect. ~ C -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Sid Bachtiar Sent: Thursday, 17 September 2009 9:26 a.m. To: [email protected] Subject: [phpug] Re: PHP 5.3.0 error Symfony doesn't use @ for retrieving get/post parameter, but uses it for database connection and other connection type as well as object chaining, but all these suppress errors are handled/caught somewhere else (e.g.:write them to log or throw them to browser on dev mode). On Thu, Sep 17, 2009 at 9:00 AM, craiganz <[email protected]> wrote: > > Hi. > I'll try to be more clear. I've already posted a similar function and > i didn't use @ :-) > > Symfony uses the construct: > @$ary[$elm]; > within it's code -- you may or may not make use of the methods that > use it. I wasn't trying to suggest @ would be used if you called > getParameter. > > Most of this discussion has focused on a ternary operator that returns > null if the array element doesn't exist. I'm certain it's also the > most common use of this construct. It just happens to be that the > most common use can be replaced with @ :-) > -Craig > > On Sep 17, 8:43 am, Sid Bachtiar <[email protected]> wrote: >> You just don't use @$ary[$elm] to write that kind of function since >> you need to detect if the index is set or not and return default value >> accordingly. >> >> > Of course if you use symfony, you're simply passing the use of both >> > this construct: >> > (isset($ary[$elm])) ? $ary[$elm] : null >> > and this one: >> > �...@$ary[$elm] >> > to someone else's code :-) >> >> I said "I prefer $something = $request->getParameter('something');", >> referring to the kind of function/method/class I prefer to use. >> > > > -- Blue Horn Ltd - System Development http://bluehorn.co.nz --~--~---------~--~----~------------~-------~--~----~ NZ PHP Users Group: http://groups.google.com/group/nzphpug To post, send email to [email protected] To unsubscribe, send email to [email protected] -~----------~----~----~----~------~----~------~--~---
