Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] błąd: funkcja nie ma objektu
Forum PHP.pl > Forum > PHP
Lejto
Mam plik index.php a w nim dołączam pliki z klasami
  1. <?php
  2. include("db.class.php"); // łączenie z bazą i operacje na niej
  3. $db = new mysql();
  4.  
  5. include("core.class.php"); // wyświetlanie danych z mysql i funkcje
  6. $c = new core();
  7. ?>

i klasie core zrobiłem extends do klasy mysql wszystko działa ładnie pięknie.
Tylko mam na tej stronie parę pod stron. Jedna ma za zadanie wysłanie maila formularz, wszystko się wyświetla.
Tyko przy wysyłaniu chce sprawdzić e-mail
Więc napisałem funkcje itp...
Funkcje umieściłem w klasie core. Gdy ją wywołuje:
  1. <?php
  2. $c->prawidlowy_email();
  3. ?>

poprzez plik mail.php
Otrzymuje taki błąd
Kod
Fatal error: Call to a member function prawidlowy_email() on a non-object in C:\Serv\www\spin\mail.php on line 22

Co może być nie tak? Uprawienia do wywołania funkcji?

Pozdrawiam
phpion
Podejrzyj sobie var_dump($c). Zapewne $c nie jest obiektem smile.gif o czym mówi komunikat (a nie żadne tam uprawnienia).
Lejto
no nie jest null daje
ale w index.php mam klasy załączone...
erix
Cytat
no nie jest null daje

Jest object, czy nie? is_callable" title="Zobacz w manualu PHP" target="_manual zwraca Ci true?
Lejto
nie ma obiektu var_dump daje NULL
is_callable zwraca false ;/
erix
No to skoro nie ma obiektu, to sprawdź, czy faktycznie Ci się pliki dołączają i czy w ogóle klasa core jest dostępna do utworzenia.
Lejto
no w index.php mam
  1. <?php
  2. include_once("db.class.php");
  3. $db = new mysql();
  4.  
  5. require_once("core.class.php");
  6. $c = new core();
  7. ?>

potem dalej z funkcji core wywołuje switcha
  1. <?php
  2. class core extends mysql {
  3. [...]
  4.    public function select_page_nag($page)
  5.    {
  6.            
  7.        switch($page)
  8.        {
  9.            case '':
  10.            $this->glowna_txt();
  11.            break;
  12.            case 'oferta':
  13.            $this->glowna_txt();
  14.            break;
  15.            case 'kontakt':
  16.            $this->glowna_txt();
  17.            break;
  18.            case 'wiadomosci':
  19.            include("news.php");
  20.            break;
  21.            case 'mail':
  22.            include_once("mail.php");
  23.            break;
  24.            case 'mail_send';
  25.            include("mail.php");
  26.            break;        
  27.            
  28.        }
  29.        
  30.        return $page;
  31.    }
  32. [....]
  33. }
  34. ?>
Spawnm
a gdzie prawidlowy_email(); questionmark.gif
Lejto
klasa core:
  1. <?php
  2. .....
  3. public function prawidlowy_email()
  4.    {  
  5.          //wyrażenie na razie wywaliłem dla testu tylko zeby w funkcje weszło
  6.    }
  7. ....
  8. ?>


co może być tu nie tak?
podać jeszcze jakiś kod?
nospor
Cytat
a gdzie prawidlowy_email(
PRzeciez to nie ma nic do rzeczy....

Cytat
Fatal error: Call to a member function prawidlowy_email() on a non-object in C:\Serv\www\spin\mail.php on line 22
Na jakim obiekcie ci sie wywala ? na $c ?

No to nie jest widoczna $c w miejscu gdzie jej uzywasz. To nic ze dales w index.php
o zasiegu zmiennych slyszales?
http://pl.php.net/manual/pl/language.variables.scope.php

skorzystaj z jakiegos wzorca: singleton, rejestr
Lejto
no tak jak wywołuje
  1. <?php
  2. $c->prawidlowy_email();
  3. ?>

w pliku mail.php
o zasięgu zmiennych słyszałem ale to się chyba w funkcji stosuje nie?
nospor
stosuje sie wszedzie tam gdzie jest potrzebne. U ciebie ewidentnie $c nie jest widoczne wiec zainteresuj sie w koncu tematem smile.gif
Lejto
nie wiem czy dobrze zrobiłem ;/
w index.php
  1. <?php
  2. require_once("core.class.php");
  3. $c = new core();
  4. global $c;
  5. ?>

nic nie zmieniło
w mail.php
dodałem
  1. <?php
  2. global $c;
  3. ?>

i juz coś jest bo inny błąd otrzymuje winksmiley.jpg, ale to jeszcze nie to
Kod
Catchable fatal error: Object of class core could not be converted to string in C:\Serv\www\spin\mail.php on line 19
nospor
ech.... a co masz w linii 19 ?
erix
Możesz pokazać całą plik z klasą i wywołujący? Bo coś mi tu nie pasuje...
Lejto
w linii 19 miałem
  1. <?php
  2. var_dump(is_callable($c, false, $callable_name));  // bool(true)
  3. ?>

zapomniałem tego usunąć, wywaliłem i działa jak powinno winksmiley.jpg
to muszę zawsze jak dołączam plik dawać global $c;?
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.