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