2010-09-13 22 views
5

Podczas pisania ostatniej aplikacji przypadkowo zacząłem wypełniać tablicę, zanim ją zadeklarowałem.Czy tablica PHP musi zostać zadeklarowana przed użyciem?

error_reporting (E_ALL); 
$array['value'] = 'Test string'; 

Używam raportowania błędów E_ALL i błąd nie został zgłoszony. Czy to jest poprawne? A jeśli tak, czy są jakieś problemy z deklarowaniem wartości tablic bez deklarowania faktycznej tablicy? Być może po prostu nie przestrzega dobrych standardów programowania.

+0

Kiedy mówisz "nie wyrzucono", oznacza to, że nie wyświetlił się na ekranie lub nie został zarejestrowany (jeśli poziom logowania jest ustawiony prawidłowo). Jeśli został zalogowany i nie został wyświetlony, sprawdź ustawienie display_errors w pliku php.ini (powinno być ustawione na 1) - jest to dobre odniesienie: http://php.net/manual/en/errorfunc.configuration.php – jlindenbaum

Odpowiedz

4

Pisząc niedawno aplikację przypadkowo rozpoczął wypełnianie tablicę zanim zadeklarował go.

PHP jest słabo pisanym językiem. Twoje oświadczenie:

$array['value'] = 'Test string'; 

jest deklaracją domniemaną (poprzez przypisanie). Tak więc powiadomienie nie zostanie wygenerowane.

Jeśli jednak miał napisać:

echo $array['value']; 

przed assigment, wtedy będziesz otrzymywać powiadomienia Undefined variable.

3

Nie, nie trzeba

I tak, to jest to dobry zwyczaj, aby zadeklarować tablicę, aby zwiększyć kodu odczytywalności

2

rozszerzyć na tym, nie ty nie „mieć”, aby, ale może to być korzystne dla.

Również jeśli masz wyłączone E_NOTICES, nie zobaczysz błędów z niezainicjowanej zmiennej. Podczas produkcji należy ją wyłączyć, ale w fazie rozwoju należy ją WŁĄCZYĆ. Pozwoli ci to znaleźć problemy, których możesz nie zauważyć.

+1

Zgadzam się. Dobrą praktyką jest deklarowanie tablicy przed użyciem. –

+3

Również nie ma powodu, aby wyłączyć go podczas produkcji. Mam na myśli, że jeśli twój kod jest czysty, nic nie zostanie zgłoszone. –

+0

"Podczas produkcji należy ją wyłączyć" Dlaczego? Oczywiście "testowanie dev powinno rozwiązać błędy przed prod", ale co, jeśli nie? Jednak jest to mało prawdopodobne, jeśli są problemy w Prod, które chcesz zobaczyć. Jeśli masz raportowanie błędów, aby pokazać je nawet w Prod, i są błędy, to złap je, a jeśli nie ma błędów, to nie ma też dzienników. Nie ma więc powodów, aby wyłączyć to w produkcji. – James

Powiązane problemy