Pojawia się (PHP 5.3), że jeśli nadpisujesz metodę klasy, , można w porządku dodać dodatkowe parametry, o ile mają one wartości domyślne.dodawanie parametrów do nadpisanej metody E_STRICT obserwacja
Rozważmy na przykład klasę:
class test1 {
public function stuff() {
echo "Hi";
}
}
następujące klasy rozciąga „test1” i będzie produkować ostrzeżenie E_STRICT.
class test2 extends test1 {
public function stuff($name) {
echo "Hi $name";
}
}
Jednak poniższe elementy nie generują ostrzeżenia E_STRICT.
class test3 extends test1 {
public function stuff($name = "") {
echo "Hi $name";
}
}
Chociaż klasa „test3” nie przynosi ostrzeżenie E_STRICT, byłem pod wrażeniem, że PHP nie pozwala podpisy metoda być przeciążony nadpisane. Muszę zapytać. Czy moja obserwacja jest błędem/błędem, czy też właściwym zamierzeniem? prawidłowe?
Ponadto, jeśli domyślny parametr argumentem jest w porządku, to dlaczego jest parametrem non-default argumentem nie w porządku?
Mam zestaw error_reporting (E_ALL) i nie mogę odtworzyć błędu E_STRICT. czy możesz opublikować błąd, który widzisz? Nie jest to również przypadek "przeciążenia", jest to "nadpisywanie". – helloandre
@helloandre, E_STRICT nie jest zawarty w E_ALL. Aby włączyć powiadomienia E_STRICT, ustaw "error_reporting (E_ALL | E_STRICT);" –
@helloandre, a E_STRICT nie jest generowane dla tego przypadku :) –