Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z OOP
Forum PHP.pl > Forum > PHP
Revan
Witam
Do swojego projektu chce uzyc Smarty i Adodb. Stworzylem sobie klase Core, w ktorej beda wszystkie podstawowe rzeczy, np. ustawienia, cos w tym stylu:

  1. <?php
  2. class Core
  3. {
  4. function UstawUstawienia()
  5. {
  6. # SMARTY
  7. include_once('libs/smarty/Smarty.class.php');
  8. $smarty = new Smarty();
  9. $smarty->template_dir = '/templates';
  10. $smarty->compile_dir = '/templates_c';
  11. # ADODB
  12. include_once('libs/adodb/adodb.inc.php');
  13. $db = NewADOConnection('mysql');
  14. $db->Connect(&#092;"localhost\", \"root\", \"krasnal\", \"frpg\");
  15. }
  16. }
  17. ?>


Teraz w plikach includuje ta klase i z tamtad chce miec dostep do obiektow $smarty i $db, ale "Fatal error: Call to a member function assign() on a non-object in c:\usr\apache\httpd\html\frpg\index.php on line 5". Probowalem przeroznych kombinacji ze slowem public, itp., ale mysle ze nie w tym rzecz. Nie mam juz pomyslu jak zrobic to dobrze.
ikioloak
chyba raczej tak powinno byc:
  1. <?php
  2.  
  3. class core
  4. {
  5. public $smarty;
  6. public $db;
  7.  
  8. public function UstawUstawienia()
  9. # SMARTY
  10. include_once('libs/smarty/Smarty.class.php');
  11. $this->smarty = new Smarty();
  12. $this->smarty->template_dir = '/templates';
  13. $this->smarty->compile_dir = '/templates_c';
  14. # ADODB
  15. include_once('libs/adodb/adodb.inc.php');
  16. $this->db = NewADOConnection('mysql');
  17. $this->db->Connect(&#092;"localhost\", \"root\", \"krasnal\", \"frpg\");
  18. }
  19. }
  20.  
  21. ?>
Revan
Tego tez juz probowalem:
Fatal error: Call to a member function assign() on a non-object in c:\usr\apache\httpd\html\frpg\index.php on line 5
A wywoluje tak:
  1. <?php
  2. require('libs/core/core.class.php');
  3. $core = new Core;
  4. $core->UstawUstawienia();
  5. $smarty->assign('title', 'Strona glówna Frpg');
  6. $smarty->display('index.tpl');
  7. ?>

Dodanie $core-> przed obiektem $smarty tez nic nie daje.
ikioloak
Bo zle sie odwolujesz do $smarty i $db. Sprobuj tak:

  1. <?php
  2.  
  3. require('libs/core/core.class.php');
  4. $core = new Core;
  5. $core->UstawUstawienia();
  6. $core->smarty->assign('title', 'Strona glówna Frpg');
  7. $core->smarty->display('index.tpl');
  8.  
  9. ?>
Revan
Aaa...
No, dzieki ;]

(w tym momencie mamy ta sama ilosc postow sleep.gif)
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.