Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Class Exception - błąd, Class Exception
bigos1995-95
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 18.05.2012

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
pamil
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


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).

Ten post edytował pamil 30.08.2012, 20:05:12
Go to the top of the page
+Quote Post
bigos1995-95
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 18.05.2012

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował bigos1995-95 31.08.2012, 10:01:15
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Da się przerobić:
function __construct($message=NULL, $code=0) {
smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bigos1995-95
post
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 18.05.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bigos1995-95
post
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 18.05.2012

Ostrzeżenie: (0%)
-----


Okej, działa nie wiedziałem ze klasa Exception jest klasa php ale juz jest git. Dzieki smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 21:20