2012-03-15 14 views
12

W PHP używam przestrzeni nazw na poziomie klasy. Jednak Netbeans nieustannie mówi mi przestrzeń nazw moich globalnych funkcji. Na przykład, jeśli wpisujęCzy powinienem używać globalnych funkcji przestrzeni nazw w PHP?

str_replace('stuff'); 

następnie Netbeans zasugeruje zmieniając go do:

\str_replace('stuff'); 

Jest to zalecenie PHP, lub po prostu Netbeans jest nadgorliwy? Nie udało mi się znaleźć niczego w dokumentacji PHP, która mówi w dowolny sposób.

Nie widzę powodującego żadnych problemów w kodzie. Jednak nie należy ignorować Netbeans, nie wiedząc, dlaczego to zaleca. Ale nie jest też w porządku zmienić mojej praktyki kodowania, nie wiedząc, że jest to słuszne.

+0

Ì nie znam żadnej takiej oficjalnej rekomendacji. Czy to może być część konwencji kodowania, której używasz? – Gordon

+0

Sposób, w jaki go widzę, polega na tym, że używasz przestrzeni nazw w kodzie i wywołujesz funkcje globalne z innych obszarów nazw (powinieneś to zrobić), ale jeśli nie używasz przestrzeni nazw, nie ma sensu tego robić. – h00ligan

+0

@ h00ligan Nie ma nic w instrukcji PHP, która tak mówi i to na pewno nie jest konieczne, ponieważ PHP powróci do globalnego zasięgu w wywołaniach funkcji. – Gordon

Odpowiedz

5

Nie ma takiego zalecenia w

Nie jest to niezbędne do korzystania z globalnej identifer od PHP awaryjne do globalnej definicji funkcji, gdy nie ma funkcji o tej nazwie w aktualny obszar nazw.

Jedynym powodem do dodania tego identyfikatora jest wyraźniejsze określenie, że chcesz użyć rzeczywistej globalnej rzeczy, aby zapobiec przypadkowym zmianom zachowań kodu, gdy ktoś doda funkcję o tej samej nazwie do bieżącego obszaru nazw. .

Możesz zapytać na numer Netbeans Mailing List, aby uzyskać więcej informacji na temat powodów sugerowania tego przez IDE.

1

Nadgorliwy na pewno, ale nie mogę odtworzyć tego jest Netbeans 7.0.1, z PHP Plugin 1.17.1. W każdym razie nie jest to konwencja i nie uważam tego za najlepszą praktykę.

+0

Weird - Nie zmieniłem żadnego z domyślnych ustawień. Dokładna wiadomość to "Zmień nazwę na" \ str_replace "". –

+0

Wygląda więc na to, że jest to kwestia późniejszych wersji. Ponieważ mam NetBeans 8.1 - i tak jest, jak mówi użytkownik @Blowski. –

0

Netbeans po prostu nie jest udokumentowane zasady rozwiązywania Przestrzenie nazw as documented:

  1. klas globalnych (jak DateTime) muszą być zakwalifikowane inaczej, PHP będzie szukać tej klasy w bieżącym obszarze nazw.
  2. funkcje globalne (takie jak array_filter) i stałe będą znalezione w globalnej przestrzeni nazw (bez wyraźnej kwalifikacji), jeśli nie istnieją w obecnej przestrzeni nazw.

Innymi słowy, Twój kod należy uznać za idiomatyczny w oparciu o udokumentowane zasady.

Powiązane problemy