2010-04-16 9 views
7

Nienawidzę tego, że Google nie może wyszukiwać symboli. Widziałem to w jakiś przykładowy kod i zastanawiał się, dlaczego tam jest znak @ przed funkcji readfile:@readfile w php?

@readfile($filename); 

Co to znaczy różnią się bez symbolu @?

+1

Jako kolejny dowód, gdy następnym razem natkniesz się na symbol, spróbuj go przeliterować, np. "Na znak", możesz znaleźć więcej wyników. –

+3

Ponadto PHP ma całkiem dobrą pomoc online. W przeważającej części możesz po prostu zrobić 'http://php.net/ [coś]' i dostać się na właściwą stronę. I tak, w tym przypadku "[coś]" może w rzeczywistości być '@': http://php.net/@ – Joey

+0

użyć tego podczas googling "@readfile()" – RSK

Odpowiedz

15

Przed poleceniem w PHP oznacza, że ​​nie są drukowane żadne błędy. Nazywa się to error control operator.

Jeśli usunięto @ i readfile napotka błąd (na przykład nie jest w stanie odczytać pliku), a następnie, w zależności od ustawień PHP-komunikat o błędzie będzie pośród treści witryny; coś, czego rzadko, jeśli w ogóle, chcesz. (Jest nawet gorzej, jeśli dzieje się to przed wywołaniem header() lub start_session() bo raz zawartość jest wysyłany, nagłówki mogą nie być już napisany.)

6

It is PHP's error suppression operator. Dzięki niemu można wyeliminować komunikaty o błędach.

Wskazówka:

prostu nie użyć operatora tłumienia błędu z prędkością krytyczne kodu.

Future:

Ponieważ @ operator jest bardzo powolny, to nie będzie działać na ini_set np @ini_set w przyszłych wersjach PHP np PHP6

Ważne Reading:

Bad uses of the @ operator

3

@ oznacza "nie wyświetlaj błędów/ostrzeżeń"

7

Mam na myśli @ jako "operatora stfu".