De @ onderdrukt een foutmelding, en is doorgaans niet verstandig te gebruiken.
Gebruik en @ alleen als je de fouten van die betreffende functie elders afvangt. Het wordt wel gebruikt bij functies als fsockopen() geloof ik. Die geeft sowieso een error als hij niet kan verbinden, terwijl het niet wenselijk is die error altijd te laten zien. Dan gebruik je dus iets als dit:
if(!@fsockopen('x')){
echo 'Verbindingsfout.';
}
Als je die @ weglaat, geeft ie een harde foutmelding, iets dat veel minder gebruiksvriendelijk is.
Het is overigens niet bij de declaratie van de functie (dat kan niet), maar bij de aanroep van een functie.