dragon001
New Member
Ich hab mir ein MVC Pattern System geschrieben.
Dabei gibt es verschiedene Typen der Controller.
Action
View
API
Ajax
etc.
Bei View, wo ich momentan probleme habe, werden diese wie folgt durchlaufen:
$class->input();
$class->prepare();
$class->prozess();
$class->output();
Das eigentliche Problem:
Ich lade eine zu verwendende Klasse in prepare mittels include_once.
Möchte ich dann auf diese Zugreiffen in der prozess Methode, gibt es Sie auf einmal nicht mehr.
Wenn ich aber im dispatcher auf folgenden Code umbaue:
echo '1';
$class->input();
echo '2';
$class->prepare();
echo '3';
$class->prozess();
echo '4';
$class->output();
bekomme ich 1234
Das heißt jedes Element wird durchlaufen.
Ich kapier nur nicht, wieso im Prepare eine klasse existiert, aber im prozess eben nicht.
Was auch noch seltsam ist, private eigenschaften, die in prepare werte zugewiesen bekommen, haben den inhalt null im prozess teil.
Versteh es leider nicht.
Hier der View Controller, um den es geht:
Die abstracte Vordefinition des View Controllers:
Die Unterste Controller Klasse:
Und das View Interface
Hof ihr könnt sehen, was mir entgangen ist.
Chris
Dabei gibt es verschiedene Typen der Controller.
Action
View
API
Ajax
etc.
Bei View, wo ich momentan probleme habe, werden diese wie folgt durchlaufen:
$class->input();
$class->prepare();
$class->prozess();
$class->output();
Das eigentliche Problem:
Ich lade eine zu verwendende Klasse in prepare mittels include_once.
Möchte ich dann auf diese Zugreiffen in der prozess Methode, gibt es Sie auf einmal nicht mehr.
Wenn ich aber im dispatcher auf folgenden Code umbaue:
echo '1';
$class->input();
echo '2';
$class->prepare();
echo '3';
$class->prozess();
echo '4';
$class->output();
bekomme ich 1234
Das heißt jedes Element wird durchlaufen.
Ich kapier nur nicht, wieso im Prepare eine klasse existiert, aber im prozess eben nicht.
Was auch noch seltsam ist, private eigenschaften, die in prepare werte zugewiesen bekommen, haben den inhalt null im prozess teil.
Versteh es leider nicht.
Hier der View Controller, um den es geht:
PHP:
<?
class extension_admin_controller_resource extends basics_controller_viewController{
public function __construct(){
parent::__construct('admin');
$this->setTemplatePath('admin');
}
private $resource;
private $next;
private $page;
private $elements;
public function prepare(){
$this->setNavigationIdent('admin');
core::register_lib('pagination');
$this->page = new paginator();
core::register_lib('usersettings');
$this->elements = usersettings::getInstance()->getItemsPerPage();
}
public function input(){
$target = new link_model();
$target->modul = 'admin';
$target->action = 'resource';
$this->page->setLink($target);
$this->page->setLimit($this->elements);
$this->resource = db_AclResourceQuery::create()
->orderByParent('ASC');
$this->page->setCount($this->resource->count());
$this->page->page();
$this->page->printCSS();
$this->next = ($this->getVar('next')==false)?1:$this->getVar('next');**/
}
public function prozess(){
$result = $this->resource->paginate($this->next,$this->elements);
$runner = array();
if(count($result)>0){
foreach($result as $key){
$tmp = array(
'objectid'=>$key->getObjectId(),
'ident'=>$key->getIdent(),
'description'=>$key->getDescription(),
'parent'=>'',
'enabled'=>''
);
$tmp['enabled'] = $key->getEnabled()?'y':'n';
if($key->getParenT()>0){
$sub = db_AclResourceQuery::create()->findPk($key->getParent());
if($sub!=null)
$tmp['parent'] = $sub->getIdent();
}
$runner[count($runner)] = (object)$tmp;
}
if(count($runner)<1)
$runner = 'n';
}else
$runner = 'n';
$this->assign('running',$runner);
}
public function output(){
$this->render('view');
}
}
Die abstracte Vordefinition des View Controllers:
PHP:
<?
abstract class basics_controller_viewController extends basics_controller_abstract implements basics_controller_view{
protected $config;
public function __construct($modul){
parent::__construct();
if(core::fileExists($modul.'/config/'.ENV_MODE, 'extension'))
$this->config = core::load($modul.'/config/'.ENV_MODE, 'extension',true);
else
$this->config = new config_config();
core::register_lib('view');
core::register_lib('language');
}
abstract public function prepare();
abstract public function input();
abstract public function prozess();
abstract public function output();
protected function render($template){
view_enginee::getInstance()->render($this->template.$template.filesystem::TPL);
}
protected function assign($pattern,$value){
view_enginee::getInstance()->assign($pattern,$value);
}
}
Die Unterste Controller Klasse:
PHP:
<?
abstract class basics_controller_abstract{
protected $template;
public function __construct(){
}
protected function setTemplatePath($modulname){
$this->template = 'extension/'.$modulname.'/view/';
}
protected function dump($var,$color=true,$return=false){
if(ENV_MODE=='developer')
if($color && $return)
return dev_dump::dump($var);
else if($color && !$return)
print dev_dump::dump($var);
else if(!$color && $return)
return dev_dump::dumpSTD($var);
else
print dev_dump::dumpSTD($var);
}
public function relocate($target){
header('Location: '.link_generator::create($target));
die;
}
public function getCookie(){
return core::get('cookie');
}
public function getSession(){
return session::getInstance();
}
public function getVar($name,$value='string'){
return router::get($name,$value);
}
public function getVarArray(){
return router::get_all();
}
public function getConfig(){
return core::getConfig();
}
public function getCore($name){
return core::get($name);
}
public function setCore($name,$value){
core::register($name, $value);
}
public function isSsl(){
return router::isSsl();
}
public function setNavigationIdent($var){
view_enginee::getInstance()->setNavSelected($var);
}
}
Und das View Interface
PHP:
<?
interface basics_controller_view{
public function prepare();
public function input();
public function prozess();
public function output();
}
Hof ihr könnt sehen, was mir entgangen ist.
Chris