Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bezpośrednie odwołanie do funkcji działa za pomoca instancji nie
Luke_Star
post
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


Mam dość zabawną lecz denerwującą sytuacje, zrobiłem instancje do klasy Model która teoretycznie działa, poniewać gdy w kontrolerze ustawie

  1. <?php
  2. if(isset($_POST['mill'])) {
  3. $this->model->test();
  4. }
  5. ?>


program zwraca odpowiedni wynik (w tym wypadku przenosi za pomoca header() do innej lokalizacji).

Problem pojawia sie jednak kilka linii dalej... także w kontrolerze przy wywoływaniu funkcji
  1. <?php
  2. $this->model->buildAr($zmienna,$zmienna2);
  3. ?>

zwraca błąd:
  1. Fatal error: Call to a member function on a non-object in /home/t/index.php on line 247


jednak wywołanie tej metody bezpośrednio za pomocą
  1. <?php
  2. $do=Model::buildAr($zmienna,$zmienna2);
  3. ?>


działa bez zarzutu. Cóż wiec może być przyczyna takiego jak dla mnie dziwnego zachowania.


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
siemakuba
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


A możesz pokazać więcej kodu? Miejsce tworzenia obiektu i cały kawałek pomiędzy jednym a drugim wywołaniem.

Ja bym stawiał że:
a) obiekt $this->model tworzysz w jakimś warunku, który zależnie od parametrów nie zawsze jest spełniony
b) niszczysz ten obiekt gdzieś pomiędzy jednym a drugim wywołaniem

pozdr.
Go to the top of the page
+Quote Post
Luke_Star
post
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

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


instancja jest tworzona w konstruktorze klasy View

  1. <?php
  2. function View(&$model) {
  3. $this->model=& $model; 
  4. }
  5. ?>


i wywoływana zawsze zaraz po rozpoczeciu kontruktora Controllera.

wywoływanie klas:
  1. <?php
  2. $dataAccess=& new DataAccess('***','****','****','****');
  3. $Model=& new Model($dataAccess);
  4. $Controller=& new Controller($Model,$_GET);
  5. $Controller->display();
  6. ?>


zaś w rozpoczeciu Konrollera:

  1. <?php
  2. function Controller(&$model, $method=null) {
  3. View::View($model);
  4.  
  5. //tutaj wywoływane jest $this->model->test(); ze skutkiem pozytywnym
  6.  
  7.  
  8. //tutaj wywyoływane jest $this->model->buildAr($a,$b); które zwraca błąd...
  9. ?>


Ten post edytował Luke_Star 20.02.2007, 13:18:14


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
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: 20.08.2025 - 11:42