Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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 MVC框架中呈现视图文件_Php - Fatal编程技术网

在自制的PHP MVC框架中呈现视图文件

在自制的PHP MVC框架中呈现视图文件,php,Php,我已经使用php开发了自己的MVC框架。 我在控制器中调用视图文件,如: include('../view/home.php'); 但我想像这样使用它: $this->view('home'); 我如何定义该函数的公共函数,其中我可以只传递视图名称,即home,它将包含视图文件而不传递完整的文件路径?如果没有看到您的代码,没有人可以回答您。但这应该是我的方法。 您应该拥有一个所有控制器都可以扩展的类。假设您有类控制器,并且所有控制器都扩展了它 然后,在名为view($view\u n

我已经使用php开发了自己的MVC框架。 我在控制器中调用视图文件,如:

include('../view/home.php'); 
但我想像这样使用它:

$this->view('home');

我如何定义该函数的公共函数,其中我可以只传递视图名称,即
home
,它将包含视图文件而不传递完整的文件路径?

如果没有看到您的代码,没有人可以回答您。但这应该是我的方法。 您应该拥有一个所有控制器都可以扩展的类。假设您有类控制器,并且所有控制器都扩展了它

然后,在名为view($view\u name)的类中可能有一个方法

然后,无论何时通过$this->view调用view,它都将包括该视图(如果存在)。
这不是最好的方法,我没有测试代码。我只是想告诉你路径

如果没有看到你的代码,没有人能回答你。但这应该是我的方法。 您应该拥有一个所有控制器都可以扩展的类。假设您有类控制器,并且所有控制器都扩展了它

然后,在名为view($view\u name)的类中可能有一个方法

然后,无论何时通过$this->view调用view,它都将包括该视图(如果存在)。
这不是最好的方法,我没有测试代码。我只是想向您展示路径

我不知道您的MVC文件/目录/名称空间等结构

但是对于那些试图通过“重塑轮子”来学习MVC和框架的初学者来说(:我可以举这样的例子:

1) 在
app/controllers
文件夹中创建公共抽象控制器类:

namespace App\Controllers;

abstract class Controller {

  public function view($name) {
    include(__DIR__.'/../views/'.$name.'.php';
  }

}
2) 创建您自己的控制器,即
PagesController
并使用它:

namespace App\Controllers;

class PagesController extends Controller {

  public function home() {
    $this->view('home');
  }
}

p、 根据自动加载逻辑,您可以省略名称空间-ing、抽象单词

我不知道您的MVC文件/目录/名称空间等结构

但是对于那些试图通过“重塑轮子”来学习MVC和框架的初学者来说(:我可以举这样的例子:

1) 在
app/controllers
文件夹中创建公共抽象控制器类:

namespace App\Controllers;

abstract class Controller {

  public function view($name) {
    include(__DIR__.'/../views/'.$name.'.php';
  }

}
2) 创建您自己的控制器,即
PagesController
并使用它:

namespace App\Controllers;

class PagesController extends Controller {

  public function home() {
    $this->view('home');
  }
}

p、 根据自动加载逻辑,您可以省略名称空间-ing、抽象单词

为什么不使用变量
$this->viewPath
,然后在函数中将viewPath与传递给view函数的值连接起来?看:那不是一个观点。这是一个模板。视图是包含表示逻辑的类。为什么不使用变量
$this->viewPath
,然后在函数中将viewPath与传递给view函数的值连接起来?看:那不是一个观点。这是一个模板。视图是包含表示逻辑的类。