Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpośrednie odwołanie do funkcji działa za pomoca instancji nie
Forum PHP.pl > Forum > PHP > Object-oriented programming
Luke_Star
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.
siemakuba
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.
Luke_Star
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. ?>
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.