Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Class Exception - błąd
Forum PHP.pl > Forum > PHP
bigos1995-95
  1. class Exception {
  2. function __construct(string $message=NULL, int $code=0) {
  3. if (func_num_args()) {
  4. $this->message = $message;
  5. }
  6. $this->code = $code;
  7. $this->file = __FILE__; // dla klauzuli throw
  8. $this->line = __LINE__; // dla klauzuli throw
  9. $this->trace = debug_backtrace();
  10. $this->string = StringFormat($this);
  11. }
  12.  
  13. protected $message = "Unknown exception"; // komunikat wyjątku
  14. protected $code = 0; // kod wyjątku definiowany przez użytkownika
  15. protected $file; // nazwa pliku źródłowego z wyjątkiem
  16. protected $line; // numer wiersza z wyjątkiem
  17.  
  18. private $trace; // stos wywołań w momencie wyst. wyjątku
  19. private $string; // wykorzystywana wewnętrznie!!
  20.  
  21. final function getMessage(){
  22. return $this->message;
  23. }
  24.  
  25. final function getCode() {
  26. return $this->code;
  27. }
  28. final function getFile() {
  29. return $this->file;
  30. }
  31. final function getTrace() {
  32. return $this->trace;
  33. }
  34. final function getTraceAsString() {
  35. return self::TraceFormat($this);
  36. }
  37. function _toString() {
  38. return $this->string;
  39. }
  40. static private function StringFormat(Exception $exception) {
  41. // ... funkcja niedostepna w skryptach PHP
  42. // zwraca wszystkie informacje w postaci ciagu
  43. }
  44. static private function TraceFormat(Exception $exception) {
  45. // ... funkcja niedostepna w skryptach PHP
  46. // zwraca zapis stosu wywolan w postaci ciagu
  47. }
  48. }




Po wywołaniu tego kodu wyrzuca mi błąd : Fatal error: Default value for parameters with a class type hint can only be NULL in C:\wamp\www\bigos\tbl\tbl.php on line 2. Mogłby mi ktoś powiedzieć co tu jest źle ??Pomijając to ze w ogole tego kodu nie rozumiem, ponieważ jest on z nowego tematu który właśnie zacząłem.
Crozin
PHP nie obsługuje TypeHintingu dla typów prymitywnych (string, int). Jedynie klasy i tablice są obsługiwane.

W chwili obecnej Twoje zapisy string $msg = null i int $code = 0 interpreter traktuje jako argument $msg, który ma być obiektem klasy "string", a nie stringiem. Analogicznie jest z argumentem $code. W przypadku gdy korzystasz z TypeHintingu jedyną dozwoloną wartością domyślną jest null (bądź pusta tablica, w przypadku gdy deklarujesz argument jako tablicę). Ty natomiast dla drugiego argumentu podajesz 0.
pamil
Cytat(Crozin @ 30.08.2012, 19:26:52 ) *
PHP nie obsługuje TypeHintingu dla typów prymitywnych (string, int). Jedynie klasy i tablice są obsługiwane.

+ Od PHP 5.4 callable, oraz od wcześniejszych wersji interfejsy (btw. traitsy nie sa obsługiwane).
bigos1995-95
czyli kod który zamieściłem działa tylko na starej wersji php wiec na dana chwile jest bezużyteczny ?Czy da się go jakoś przerobić?
nospor
Da się przerobić:
function __construct($message=NULL, $code=0) {
smile.gif
bigos1995-95
Fatal error: Cannot redeclare class Exception in C:\wamp\www\bigos\tbl\tbl.php on line 1


Ok, zrozumiałem to ze stringami i intami i zmieniłem drugą linijkę kodu ale oczywiście mam następny błąd;/ Fatal error: Cannot redeclare class Exception in C:\wamp\www\bigos\tbl\tbl.php on line 1
nospor
Przecież klasa Exception jest klasą PHP. Nie możesz stworzyć drugiej klasy o tej samej nazwie. Komunikat błędu daje ci to jasno do zrozumienia.
bigos1995-95
Okej, działa nie wiedziałem ze klasa Exception jest klasa php ale juz jest git. Dzieki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.