使用MVC实现的hello world!

2011-05-28 12:32:55
王春生
28396
最后编辑:潘仙芝 于 2015-01-09 14:41:46
简介:在上一章中,我们实现了hello world的输出,在这一章里面,我们将向你展示如何利用mvc结构

在上一章中,我们实现了简单的Hello world输出,在这一章里面,我们将向你展示如何利用mvc的结构来实现Hello world.

一、仅有control.php的hello world.

在上一个章节中,我们所实现的代码,实际上是在control里面直接输出了Hello world.

<?php
class hello extends control
{
    public function world()
    {
        echo 'Hello world';
    }
}

二、有model层的hello world.

现在稍微复杂一点,引入model。我们来创建model文件:model.php。 

<?php
class helloModel extends model
{
    public function world()
    {
        return 'Hello world!';
    }
}
现在control需要做一些改动:  
public function world()
{
    echo $this->hello->world();
}
框架会自动加载当前模块所对应的model类,并生成model对象,然后在control就可以通过 $this->hello(也就是模块名)这样的形式来引用model中的各个方法了。

现在再来访问下http://localhost/zentaophp/hello-world,是不是同样可以显示出hello world!?

三、带有view层的hello world.

zentaoPHP框架对模板的命名约定如下:

1. 视图文件都存放在各个模块的 view目录下面。
2. 视图文件的命名规则是 方法名+模板名+.php。比如我们要访问的index.html,那么对应的模板文件是index.html.php。


首先我们来修改下control文件。 

public function world()
{
    $this->view->helloworld = $this->hello->world();
    $this->display();
}
 然后我们来创建view/world.html.php,内容如下


<?php
echo $helloworld;
?>

control将model返回的变量赋值到视图文件。然后调用display方法展示模板文件就可以了。

ok,这时再重新刷新访问,是不是可以呢?

走到这一步,恭喜你,你已经接触到了ZenTaoPHP框架基础,核心的东西了。

评论列表
dake 2017-11-24 20:50:52
我把登录页面copy了一份,放在login.html.php的同级目录,命名为login_,但是public function login_(){$this->display();}没有进入到login_.html.php里面,而是进入了login.html.php里面,这是为什么,找了半天没有找到,debug也没有
王春生 2017-11-25 18:32:31
换个名字试试。
dake 2017-11-27 14:58:11
换个名字也不行,我login_y这个funtion是在login里面调用的,$this->login_y();exit;就是不行
dake 2017-11-27 16:17:23
public function login_y()
{
$this->display();
}
public function login()
{
$this->login_y();
die;
$this->display();
}
这样写有什么问题吗?为什么不是进到login_y页面呢
王春生 2017-11-28 08:40:10
写法不对。请仔细看我们的框架规则。
王春生 2017-11-28 09:47:28
你在login()里面调login_y(),显示的模板文件还是按照login()来走的。这是框架的规则。
你其实只需要扩展login方法的模板文件就好了。
dake 2017-11-28 16:04:38
没有完整的手册,非内部开发人员二次开发起来要找好久
小小 2016-12-15 15:57:24
那如果是在html样式页面中显示呢,也是用<?php ?>显示?
王春生 2016-12-16 13:56:42
zentaophp框架里面view层的代码都是php和html直接混写的。就是用php做原生的模板语言。
xiaoniba 2016-05-19 21:12:33
请问这里的 $this 具体指代什么?
王春生 2016-05-20 09:56:22
当前的对象。
shangg16 2016-05-03 15:42:16
怎么这么神奇啊,,好吧,得好好看看 zentaophp文件,谢谢!!
桃子 2015-03-12 14:56:18
测试通过。
不过,还有个问题模板名是默认的html,还是可以变动的,有什么用?
zyl 2015-11-22 00:32:54
同问!
阳光海岸 2014-10-21 15:20:12
谢谢~
1/1
发表评论
评论通过审核后显示。