Re: Error suppression operator (@)

From: Date: Wed, 04 May 2005 18:14:13 +0000
Subject: Re: Error suppression operator (@)
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-214454@lists.php.net to get a copy of this message
Greg Donald wrote:
On 5/3/05, GamblerZG <gambler@highstream.net> wrote:
I would like to know, whether using @ is a good practice.
I try not to use it much, but when I do I back it up with checking to see if an error really occured. I use it for file handles, database handles, stuff that I really expect to break sometimes. I don't ever use it to assist with sloppy coding style, not defining variables and such. In fact I always code with error_reporting( E_ALL ) until I take the code into production.
Greg makes some good points. in short don't use @ lightly, in theory you are never required to use it at all. in some situations you may have an intensive/heavy function or loop which access array items (inside the loop) which may or may not be set... in such cases you may find you want/need to try and optimize.... foreach($arr1 as $a) {
    // if (isset($arr2[ $a ])) {
    if (@$arr2[ $a ]) {
        // ...
    }
    // ...
} this example assumes that $arr2 is an array and that every item you are checking will cast to boolean true (e.g. the value 0 will cast to false) -- so on a few occasions you can 'cheat' with the @ and grab a cycle or 2, but be very careful what you are doing. have fun :-)
For example, I have an array of unknown length $array. Is it all right write something like this: @list($first, $second) = $array;
I go with $array[0], $array[1] and such. Or maybe while( list( $k, $v ) = each( $array ) ) { }


« previous php.general (#214454) next »