Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Php 7 i PHPStorm 10
Fred1485
post 22.12.2015, 13:12:10
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ś?



--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
batman
post 22.12.2015, 14:00:45
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Fred1485
post 22.12.2015, 14:27:42
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 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ść tongue.gif

http://abload.de/img/beztytuuhhqif.png


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Pyton_000
post 22.12.2015, 15:05:19
Post #4





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

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


To jest bug 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 22.12.2015, 15:25:54
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 wink.gif


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Fred1485
post 22.12.2015, 16:04:38
Post #6





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

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


No niestety w EAP to samo 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


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
com
post 22.12.2015, 19:18:34
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 wink.gif

Btw to nawet widać na Twoim zamieszczonym obrazku wink.gif
Go to the top of the page
+Quote Post
Pyton_000
post 22.12.2015, 20:09:29
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 22.12.2015, 20:17:59
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ł smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 22.12.2015, 20:32:28
Post #10





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

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


Nie, nie pomaga smile.gif
Go to the top of the page
+Quote Post
com
post 8.01.2016, 19:08:13
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 biggrin.gif poprawili biggrin.gif
Go to the top of the page
+Quote Post
Pyton_000
post 8.01.2016, 19:21:12
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 ? biggrin.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 Wersja Lo-Fi Aktualny czas: 24.06.2025 - 12:49