Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Php 7 i PHPStorm 10
Fred1485
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Chciałem pobawić się z PHP7, pobrałem testową wersję PHPStorm 10. Interpreter dodałem, więc efekty moich wypocin pisane w PHP7 w przeglądarce działają, ale w IDE wyrzuca dziwne błędy, mianowicie:

  1. public function __construct (array $resources, array $requirements, int $destruction)
  2. {
  3. $this->resources = $resources;
  4. $this->requirements = $requirements;
  5. $this->destruction = $destruction;
  6. }


Rzutuję $destruction na int, konkretyzując obiekt dostaję błąd:

  1. $level = new \Game\Fields\DeepDeath([], [], 30);


Błąd dotyczy tego, że konstruktor oczekiwał nie int a obiektu o typie int. Już to drażni w oczy, mając metodę:

  1. public function getDestruction (): int
  2. {
  3. return $this->destruction;
  4. }


I wywołanie:

  1. echo $level->getDestruction();


Otrzymuję kolejny błąd, jak się można domyślić, że nie mam metody __toString w obiekcie int. IDE bierze wartość skalarną jakby był to obiekt. Dodam, że w przeglądarce działa wszystko. Może trzeba w opcjach przełączyć coś?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Sprawdź czy na pewno masz wybrane PHP7 w Languages & Frameworks -> PHP -> PHP Language level. Samo ustawienie interpretera nie gwarantuje poprawnego zidentyfikowania języka.
Poza tym piszesz, że błąd pojawia Ci się w wywołaniu konstruktora, a wcześniej pisałeś, że kod poprawnie się uruchamia. To jak to w końcu jest? Najlepiej będzie jak wrzucić screny z opisem błędów z PhpStorma.
Go to the top of the page
+Quote Post
Fred1485
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Już prostuję, w IDE pokazuję błąd, natomiast w przeglądarce wszystko działa (IMG:style_emoticons/default/wink.gif) W opcjach mam ustawiony interpreter na PHP7 oraz wersję także na 7.

  1. namespace Game\Fields;
  2.  
  3.  
  4. abstract class Field
  5. {
  6. protected $resources = [];
  7.  
  8. protected $requirements = [];
  9.  
  10. protected $destruction;
  11.  
  12. public function __construct (array $resources, array $requirements, int $destruction)
  13. {
  14. $this->resources = $resources;
  15. $this->requirements = $requirements;
  16. $this->destruction = $destruction;
  17. }
  18.  
  19. public function getResources (): array
  20. {
  21. return $this->resources;
  22. }
  23.  
  24. public function getRequirements (): int
  25. {
  26. return $this->requirements;
  27. }
  28.  
  29. public function getDestruction (): int
  30. {
  31. return $this->destruction;
  32. }
  33. }
  34.  
  35. class DeepDeath extends Field {}
  36.  
  37. class MysteryDark extends Field {}
  38.  
  39. class SunEnd extends Field {}


Wywołanie:

  1. declare(strict_types=1);
  2.  
  3. require_once __DIR__ . '/Fields/Fields.php';
  4.  
  5. $level = new \Game\Fields\DeepDeath([], [], 30);
  6.  
  7. echo $level->getDestruction();


Sorki za niską rozdzielczość (IMG:style_emoticons/default/tongue.gif)

http://abload.de/img/beztytuuhhqif.png
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


To jest bug (IMG:style_emoticons/default/wink.gif)
Prawdopodobnie zostało to już poprawione. Spróbuj pobrać EAP i sprawdź jeszcze raz.

https://confluence.jetbrains.com/display/Ph...+Access+Program
Go to the top of the page
+Quote Post
batman
post
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Tak jak mówi @Pyton_000. Sprawdź najnowszą dostępną wersję. Jeśli błąd będzie się nadal pojawiał, zgłoś go do JetBrains. Ostatnio miałem błąd związany z obsługą klas anonimowych. Dwa maile, opis sytuacji + kod powodujący błąd i ticket wystawiony. Teraz trzeba poczekać, aż ktoś go ruszy (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Fred1485
post
Post #6





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


No niestety w EAP to samo (IMG:style_emoticons/default/tongue.gif) Trzeba będzie napisać do twórców.

--edit

Na stacku napisali, żeby zmienić int na \int i o dziwo działa. Co u licha?

Ten post edytował Fred1485 22.12.2015, 16:29:19
Go to the top of the page
+Quote Post
com
post
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


bo on szuka domyślnie definicji int w twojej przestrzeni nazw, tak samo jest z innymi klasami np Exception nie zadziała, a \Exception tak (IMG:style_emoticons/default/wink.gif)

Btw to nawet widać na Twoim zamieszczonym obrazku (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


@com tak ale to jest niepoprawne zachowanie bo int nie jest typem obiektowym jak Int w Java.
Go to the top of the page
+Quote Post
com
post
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no owszem, być może phpdoc by pomógł (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie, nie pomaga (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
com
post
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no to w takim razie trzeba to zgłosić i poprawią, w końcu php7 dopiero wyszedł więc pewnie jeszcze będzie sporo innych błędów.

Fix of scalar types in namespaced classes for PHP 7 (IMG:style_emoticons/default/biggrin.gif) poprawili (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A działa chociaż ta poprawka ? (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 29.09.2025 - 13:34