Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> __PHP_Incomplete_Class Object
wojto
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


witam,
na stronie moje sesje przyjmuja taka wartosc:
Kod
Array
(
    [language] => language Object
        (
            [lang_name] => __PHP_Incomplete_Class Object
                (
                    [__PHP_Incomplete_Class_Name] => language
                    [lang_name] => russian
                )

        )

)

znalazlem w necie info, ze __PHP_Incomplete_Class Object jest jakims bledem w php :/
czy ktos z was sie spotkal z takim bledem i wie jak temu zapobiec?

klasa language jest prosta:
  1. <?php
  2. class language
  3. {
  4. function language() {
  5. return true;
  6. }
  7.  
  8. function load_file($file) {
  9. global $lang, $auth;
  10.  
  11. if (file_exists(SITE_ADRESS.'languages/'.$auth -> user_language.'/'.$file)) {
  12. include_once(SITE_ADRESS.'languages/'.$auth -> user_language.'/'.$file);
  13. return true;
  14. } else {
  15. return false;
  16. }
  17. }
  18. }
  19.  
  20. ?>

tworzenie: $language = new language();

// aha, na localhoscie dziala ok

pzdr. wojto

Ten post edytował wojto 7.09.2005, 14:58:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
aleksander
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


czy na localu i na serwerze wersje php sa te same?

btw
1.
class language
{
function language() {
return true;
}
co to jest? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Konstruktor nie moze zwracac nic, bo jest wywolywany przy tworzeniu obiektu i do zmiennej przisywany jest Resource do obiektu a nie wynik returna.

2. nie uzywaj global, bardzo zla praktyka programistyczna, w OOP w ogole nie do przyjecia:)
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


na moje oko, zeby w sesji bylo git, musisz zaincludowac strukture klasy na początku, zeby php wiedzial jak ma obiekt wygladac... bo jak wiesz... obiekt to nei tylko jego wartosci, ale tez metody ^^
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Definicja obiektow przechowywanych w sesji musi byc znana przed session_start(), zeby zapobiec temu bledowi.
Mialem dokladnei to samo chyba przedwczoraj, ale nie chcialem niepotrzebnie ladowac definicji klasy, ktora byla uzywana tylko w kilku miejscach, wiec ostatecznie zapisalem do sesji obiekt w postaci zserializowanej.
Go to the top of the page
+Quote Post
wojto
post
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


na serwerze jest 4.3.10, u mnie jest 5.0.0

usunalem te globale i dalem singletony, ale teraz mam taki problem, ze nie widzi mi obiektu $db w klasie $session, a kolejnosc wywolywania mam nastepujaca:

  1. <?php
  2. //...
  3. $db =& Db::getinstance();
  4. $db -> sql_connect();
  5.  
  6. $io =& Io::getinstance();
  7.  
  8. $error =& Error::getinstance();
  9.  
  10. $session =& Session::getinstance();
  11.  
  12. $auth =& Auth::getinstance();
  13.  
  14. $language =& Language::getinstance();
  15. ?>

o singletonach dopiero co przeczytalem dokladnie przed 5 minutami

getinstance w kazdej klasie wyglada analogicznie:
  1. <?php
  2. function &getinstance() {
  3. static $instance = false;
  4.  
  5. if ($instance == false) {
  6. $instance = new Auth();
  7. }
  8.  
  9. return $instance;
  10. }
  11. ?>


no i wykonujac skrypt dostaje blad:
Kod
php Notice: Undefined variable:  db
Fatal error: Call to a member function sql_query() on a non-object in c:\usr\apache\httpd\html\poflirtuj\includes\session.class.php on line 98

ta linia, to:
Kod
function gc($a)
{
//linia 98:
    return($db -> sql_query("DELETE FROM ".PREFIX."sessions WHERE last_active<UNIX_TIMESTAMP()-1800"));
}


OOP tylko liznalem w javie, wiec problem moze jest w kolejnosci wywolywania klas, czy da sie zrobic tak, zeby dzialalo wszystko ok, jesli klasy sa powiazane w sposob: mam klasy Auth, Db, Error, Io, Language, Session

Auth korzysta z Db i Io
Io korzysta z Db
Language korzysta z Auth
Session korzysta z DB, Auth

niby w takiej kolejnosci jak wywoluje, to kazda klasa powinna miec to co potrzebuje :/
Go to the top of the page
+Quote Post
aleksander
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


a zdefiniowales zmienna $db w metodzie gc ? to jest tak samo jak w funkcjach. Zrob wpierw
  1. <?php
  2. function gc($a)
  3. {
  4. $db = DB::getInstance();
  5. return($db -> sql_query("DELETE FROM ".PREFIX."sessions WHERE last_active<UNIX_TIMESTAMP()-1800"));
  6. }
  7. ?>

i używaj znacznika php
(IMG:http://forum.php.pl/uwaga.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:36