Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过控制器跨类调用函数_Php_Oop_Controller - Fatal编程技术网

Php 通过控制器跨类调用函数

Php 通过控制器跨类调用函数,php,oop,controller,Php,Oop,Controller,我有一个控制器类 <?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(){

我有一个控制器类

<?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();
?>

当然,这是行不通的,但我认为它让我明白了我要做什么。我应该怎么做?


<?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);
?>

这里您可以使用PHP5类型提示。你可以读更多

代码:


你安装了php扩展吗?我想你需要看看设计模式,特别是MVC。这是一种通过控制器从数据源在视图中显示内容的超链接方式。你能给我一个快速的解释或者一个很好的教程吗?谢谢你的回复。然而,这只是一个例子。“子功能”的数量是由控制器的功能决定的,所以这不起作用。@user3053216我不太明白你的意思。当然,您将拥有更多的模型和视图。对于每个页面,您都应该有一个单独的本地化控制器来扩展主控制器。
<?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();