Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]programowanie obiektowe a IDE
Forum PHP.pl > Forum > Przedszkole
eminiasty
Kawałek kodu z fw o nazwie codeigniter(lecz to nie aż tak istotne).
Ładuje model w konstruktorze:
  1. $this->load->model("Test");

i teraz w metodzie index ktora jest domysla chce wywolać ten model:
  1. $this->Test->abc();


Dlaczego gdy w tym momencie klikam na abc nie moge przeniesc sie do mojej metody w modelu lub klikajac na Test do mojego Modelu?
Co więcej IDE twierdzi ze model jest nie zdeklaorwany?
IDE -> PHPSTORM. Czy są jakieś ustawienia na to, a może poprostu źle coś robie?

Kontroler:
  1. class Welcome extends MY_Controller
  2. {
  3.  
  4. function __construct()
  5. {
  6. parent::__construct();
  7. $this->load->model("Test");
  8. }
  9.  
  10. public function index()
  11. {
  12. $this->load->view('welcome_message');
  13. $this->Test->abc();
  14. }
  15.  
  16. public function test()
  17. {
  18. echo 'test';
  19. }
  20. }

Model:

  1. class Test extends CI_Model
  2. {
  3. public function abc(){
  4. echo "dziala";
  5. }
  6. }
Pyton_000
Bo IDE to nie wróżka.
eminiasty
no co ty...
aczkolwiek jeśli ładuje jakiś model j/w
to po wpisaniu "$this->Test->" powinien mi już coś pokazać?
Chodźby dostepne metdoy z tego modelu?

Na pewno da sie ten efekt osiągnąć.
viking
Wstaw odpowiednie komentarze, przykłąd https://github.com/zendframework/zend-mvc/b...Application.php
Pyton_000
Nie powinien, bo w klasie nigdzie nie ma deklaracji takiego pola, bo model->load() robi swoją abstrakcję.

Tu masz mały hack

https://intellij-support.jetbrains.com/hc/e...PHPDoc-property
eminiasty
Nie pomyślał bym, że komentarz na to wplywa, lecz ok.
  1. <?php
  2.  
  3. /**
  4.  * Class Test
  5.  */
  6. class Test extends MY_Model
  7. {
  8. /**
  9.   * Function ABC
  10.   */
  11. public function abc(){
  12. echo "dziala";
  13. }
  14. }


Zastosowałem komentarz blokowy jak w przykladzie, jednak to nie wpływa na to by problem się rozwiązał:

Pyton_000
Chyba nie przeczytałes tego co podesłałem
eminiasty
Jeśli dobrze zrozumiałem ty zasługerowałeś coś takeigo:

  1. /**
  2.   * @property Test
  3.   */
  4. $this->load->model("Test");


co w ostatecznym efekcie nic nie zmienia
Pyton_000
Widzę albo problemy z czytaniem albo rozumieniem co się czyta.

Wyraźnie napisane jest@property can be added only to the class phpdoc, not to the method phpdoc.
eminiasty
Ok, ale koleś dodaje do metody w przykładzie.

A co z sytuacja gdy "$this->Test->" ( bo mozna założyć, że to ma doprowadzic do tego etapu), metody sie nie pokaza?

//jak bym nie dodwał tego property to nie ma autouzupełniania

Może jeszcze raz.
Mam jakiś model.
Chce go wywołać w kontrolerze i to w kontrolerze chce mieć dostęp do metody abc po załadowaniu modelu.
W samym modelu to działa, lecz bez @property też są podpowiedzi w tej samej klasie.

Gdzie umieścić te property tak bym działało autouzupełnanie czy jak to inaczej nazwać.
Pyton_000
facepalmxd.gif

Masz dodać to do klasy a nie metody
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.