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