Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP]programowanie obiektowe a IDE
eminiasty
post 13.12.2017, 15:38:21
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


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


Ten post edytował eminiasty 13.12.2017, 15:41:18
Go to the top of the page
+Quote Post
Pyton_000
post 13.12.2017, 16:01:55
Post #2





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

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


Bo IDE to nie wróżka.
Go to the top of the page
+Quote Post
eminiasty
post 13.12.2017, 16:11:08
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


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ąć.
Go to the top of the page
+Quote Post
viking
post 13.12.2017, 16:12:34
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Wstaw odpowiednie komentarze, przykłąd https://github.com/zendframework/zend-mvc/b...Application.php


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 13.12.2017, 16:15:41
Post #5





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

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


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
Go to the top of the page
+Quote Post
eminiasty
post 13.12.2017, 16:34:08
Post #6





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


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ł:

Go to the top of the page
+Quote Post
Pyton_000
post 13.12.2017, 16:45:01
Post #7





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

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


Chyba nie przeczytałes tego co podesłałem
Go to the top of the page
+Quote Post
eminiasty
post 13.12.2017, 18:35:41
Post #8





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


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
Go to the top of the page
+Quote Post
Pyton_000
post 13.12.2017, 19:23:40
Post #9





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

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


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.
Go to the top of the page
+Quote Post
eminiasty
post 13.12.2017, 19:39:40
Post #10





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


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ć.
Go to the top of the page
+Quote Post
Pyton_000
post 13.12.2017, 19:39:57
Post #11





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

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


facepalmxd.gif

Masz dodać to do klasy a nie metody
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: 18.04.2024 - 19:48