PHP OO でページを介してパラメーターを使用することについて、私は非常に混乱しています。フレームワークの作成に関するチュートリアルに従っています (これは Zend フレームワークに似ています)。しかし、私が理解していないのは、これがいつ起こるかです:
例、インデックス:
// File: sourcefiles/index.php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', realpath(dirname(__FILE__)).DS );
define ('APP_PATH',(ROOT.'aplicacion'));
require_once APP_PATH. DS.'Config.php';
require_once APP_PATH. DS.'Request.php';
require_once APP_PATH. DS.'BootStrap.php';
require_once APP_PATH. DS.'Controller.php';
require_once APP_PATH. DS.'View.php';
try
{
BootStrap::run(new Request());
私は持っている:
// File: sourcefiles/controladores/IndexController.php
<?php
class IndexController extends Controller
{
public function __construct() {
parent::__construct();
}
public function indexAction()
{
$this->view->titulo='Homepage';
$this->view->contenido='Whatever';
$this->view->renderizar('index');
}
}
?>
この:
// file : sourcefiles/aplicacion/View.php
<?php
class View
{
private $controlador;
private $layoutparams;
public function __construct(Request $peticion)
{
$this->controlador = $peticion->getControlador();
}
public function renderizar($vista,$item=false)
{
$rutaview = ROOT.'vistas'.DS.$this->controlador.DS.$vista.'.phtml';
if (is_readable($rutaview))
{
include_once $rutaview;
}
else
{
throw new Exception('Error de vista');
}
}
}
?>
ビューは次のとおりです。
// file : sourcefiles/vistas/index/index.phtml
<h1>
Vista index..
<?php
echo $this->titulo;
echo $this->contenido;
?>
</h1>
今私の質問は次のとおりです。
IndexController はどのように行を使用できますか? $this->view->titulo = blabla;
ビュー クラスには「titulo」属性がありません。しかし、私はそれを行うことができます。しかし、ここで奇妙なことに、 を呼び出した後にそれを行うと$this->view->renderizar('index')
、エラーが発生します。
index.phtml ファイルはこれをどのように認識していますか? echo $this->titulo;
include または require が呼び出されないため、混乱します。
ファイルでrequireまたはinclude呼び出しを行うと、requireまたはincludedファイルは呼び出し元の変数を知っていますか?
誰かが私にこれらを説明できるなら、私はそれを本当に感謝します:Dまたはこれに関する公式情報に関する議論に私をリンクしてください、またはこれはどのように呼ばれますか?