Widzę, że w PHP 5.3.2 jest klasa ArrayObject. Czy można zadeklarować nowy obiekt o nazwie Array?

Który rozszerza ArrayObject. Ale nie jestem pewien, czy „Array” jest zarezerwowanym słowem kluczowym, czy powinienem użyć własnego prefiksu, np. XArray(), MyArray itp.

Chciałbym mieć

class Array extends ArrayObject {

...my own code

}
1
IEnumerable 5 luty 2012, 05:15

3 odpowiedzi

Najlepsza odpowiedź

Wszystko, co musisz zrobić, to spróbować uruchomić:

<?php class Array {}

I zobaczysz:

Parse error: syntax error, unexpected 'Array' 

Więc odpowiedź brzmi: nie, nie możesz. Musisz użyć innej nazwy.

8
Matthew 5 luty 2012, 05:19

Jeśli to działa teraz, może się zdarzyć, że w przyszłości utworzy klasę Array. Najlepiej jest po prostu trzymać się z daleka od nazw, które są tak oczywiste, że język może je zdefiniować.

Edit: Jak zauważył Mateusz, to nie działa. Widząc jego odpowiedź, zdałem sobie sprawę, dlaczego to nie działa: array jest słowem kluczowym w php (pozwala na utworzenie literału tablicy), a słowa kluczowe nie są rozróżniane wielkością liter w php.

1
Jasper 5 luty 2012, 05:21

Nie jestem pewien, czy „Tablica” jest zarezerwowanym słowem kluczowym

Łatwo to sprawdzić. lista zarezerwowanych słów kluczowych PHP ma „array()” na początku i na środku .

Ta strona zawiera również następujące wskazówki:

Nie możesz użyć żadnego z poniższych słów jako stałych, nazw klas, nazw funkcji lub metod. Używanie ich jako nazw zmiennych jest ogólnie w porządku, ale może prowadzić do zamieszania.

Więc nie, nie możesz. Musisz zmienić nazwę swojej klasy na inną, a twoje imię musi być rozróżniane nie tylko za pomocą wielkości liter, ponieważ w nazwach klas PHP nie jest rozróżniana wielkość liter.

0
Farray 5 luty 2012, 05:26