Mam taki kod MainController.php, prosze zwrocic uwage glownie na ostatnia metode setModel() :
<?php class MainController { private $controllerPrefix; private $controllerSufix; private function __construct() { $this->controllerPrefix = 'controllers/class.'; $this->conntrolerSufix = '.php'; } if (!self::$instance instanceof self) { self::$instance = new self; } return self::$instance; } public function dispatch($_POST = null) { $controllerClassName = $_POST['controller']; //echo $controllerClassName; $this->setModel($model); } $params = $_POST; if($_POST['controller'] != '') { $controllerClass = new $controllerClassName($params); } else { $controllerClass = new LoginController($params); } } else { //$this->dispatch_default(); $controllerClass = new LoginController($params); } } private function setModel($model) { $className = $model.'Model'; $this->Model = new $className; } }
No i teraz robie klase dziedziczacą po MainController :
class LoginController extends MainController{ function __construct($params) { $action = $params['action']; if(method_exists('LoginController', $action)) { $this->$action($params); } else { $this->defaultAction(); } } function defaultAction() { $this->view = new LoginView; $this->view->display('login'); } function mailbox() { $_SESSION['login'] = $_POST['login']; $_SESSION['pass'] = $_POST['pass']; if(($this->Model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) { //$this->view->display('login'); } else { //$_SESSION['logged'] = 1; //$this->menu(); //$this->inbox(); //print_r($_SESSION['connId']); } } }
No i chce sie dostac do metody klasy ktora zostala stworzona w MainController->setModel tak jak widac wyzej czyli :
function mailbox() { $_SESSION['login'] = $_POST['login']; $_SESSION['pass'] = $_POST['pass']; if(($this->Model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) {
Ale wywala mi blad :
[quote]
Notice: Undefined property: LoginController::$Model in C:\Apache\htdocs\PrackaMgr\controllers\class.LoginController.php on line 25
Fatal error: Call to a member function connect() on a non-object in C:\Apache\htdocs\PrackaMgr\controllers\class.LoginController.php on line 25
[/php]
Jezeli klasa LoginController dziedziczy po klasie MainController to chyba zmienna $this->Model powinna byc w jakis sposob rozpoznawana....jak to poprawic ? No i czy to wogole jest dobre rozwiazanie jesli chodzi o wzorzec MVC ?

--------------------------------------------------------------------------------
Ok, z notice juz sobie poradzilem, wystarczylo zadeklarowac publiczna zmienna $Model
Ale zostal jeszcze ten fatal error czyli 'Call to a member function connect() on a non-object...'