Beste mensen,

ik zit met een vervelend bizar probleem dat ik al werkend heb gezien bij iemand anders zijn code.

ik heb een main controller die de view init

<?php
class TESS_controller{

public function __construct()
{
$this->view = new TESS_view();
}

public function load($model)
{
require 'application/models/' . $model . '.php';
$this->model = new $model;
}
}
?>

ik heb andere child constructors! De view word prima geinjecteerd door parent::__construct

<?php
class Index extends TESS_controller{

public function __construct()
{
parent::__construct();

$this->view->load('index/index');
}

public function anthony()
{

}
}
?>

Wat is nu het probleem ik kan geen variable aanmaken in childs voor de view

<?php $this->view->naam = 'weetikwie'; ?>

werkt niet. ik krijg steeds undefined variable op de error.
maar als ik dit doe in de main controller lukt dat wel???

waarom kunnen de childs dit niet als parrent construct word? hoe kan ik dit het beste oplossen?
Dit heeft niets met 'bizar' te maken. In je parent heb je $this->view niet gedefinieerd. Die variabele wordt dus runtime aan gemaakt en is daarmee private geworden. Descending classes kunnen die variabele dus niet gebruiken. Leer de verschillen tussen private, protected en public, dan is dit niet meer 'bizar'.
En gebruik ook een autoloader.
Probeer zo eens...

<?php
class TESS_controller{

protected $view;

public function __construct()
{
$this->view = new TESS_view();
}

public function load($model)
{
require 'application/models/' . $model . '.php';
$this->model = new $model;
}
}
?>
heb ik al geprobeerd werkt niet

in de main controller kan ik dus vars on the fly maken

$this->view->nummer = 8 geen probleem

maar in de childcomtrollers krijg ik steeds undefined variable TESS_view::nummer.

terwijl ik op de tutorial die gast hetzelfde zie doen in de childs met dezelfde code ongeveer denk ik.

ligt dat aan men instellingen ofzo? ik zie anders geen uitweg?

tenzij de views telkens op te roepen in de child controllers in plaats van in de main controller

maar dan heeft die ook geen nut meer.
Laat (de code) eens zien hoe je dat doet vanuit de child controller.
stel ik surf naar index/test, word mijn test functie aangeroepen

die zegt dat $this->view->naam gelijk aan men modal die bv Anthony returned

variable $this->view->naam blijft leeg NULL;

<?php

class Index extends TESS_controller{

public function __construct()
{
parent::__construct();

$this->view->load('index/index');

}

public function test()
{
$this->view->naam = $this->model->Getnaam();
}
}
?>


[size=xsmall]Toevoeging op 18/06/2013 10:22:44:[/size]

doe ik dit inde main werkt het wel
Net had je het over een foutmelding die je kreeg, nu heb je het over een variabele die NULL is. Dat zijn 2 verschillende dingen. En waar roep je die $this->view->naam op?
in de client index

print $this->naam;

alles werkt als ik de view in elke controller aanmaak

dus elke keer $this->view = new TESS_view;

maar ik wil dat in men main doen daarvoor dient deze tog.

ik begrijp het echt niet. ik zie mensen dit doen. ben al van gisteren middag bezig dit op te lossen maar in vind geen oplossing.
$this->naam is iets anders dan $this->view->naam.

Plaats nu eens gewoon even al je code inclusief de code waar het misgaat.

Reageren