我有这个控制器类。
<?php
class controller{
function __construct(){
$this->db = new db;
$this->output = new output;
}
}
class db{
function get(){
return 'value from db';
}
}
class output{
function view(){
print $controller->$db->get();
}
}
$c = new controller;
$c->output->view();
?>
当然这不起作用,但我认为它符合我想要做的事情。我该怎么做?
答案 0 :(得分:1)
<?php
class controller{
function control($db, $output){
$data = $db->get();
$output->view($data);
}
}
class db{
function get(){
return 'value from db';
}
}
class output{
function view($data){
print $data;
}
}
$db = new db;
$output = new output;
$c = new controller;
$c->control($db, $output);
?>
答案 1 :(得分:0)
在这里你可以使用PHP5 Type Hinting。您可以阅读更多here
代码:
<?php
class controller
{
function __construct()
{
$this->db = new db;
$this->output = new output($this->db);
}
}
class db
{
function get()
{
return 'value from db';
}
}
class output
{
private $_db;
public function __construct(db $get)
{
$this->_db = $get->get();
}
public function view() {
return $this->_db;
}
}
$c = new controller();
echo $c->output->view();
在这个例子中:
我们正在键入提示db
类将$this->db
实例化对象传递给controller
类__construct
魔术方法。
然后在output
类上,我们使用实例化变量传递实际的类名db
并获取方法get()
并将值存储到私有$db_
属性中返回view()
方法。
希望它有所帮助!