使用MVC实现的hello world!

2011-05-28 12:32:55
王春生
62981
最后编辑:潘仙芝 于 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框架基础,核心的东西了。

评论列表
PAN 2020-08-24 18:06:04
棒棒
禅道新增control必须登录吗? 2019-11-07 14:59:51
在zentao 里面新建一个 module 子目录里面新增 control.php ,访问 这个control.php 的方法要先登录 /zentao/user-login-L3plbnRhb。。。。。。。。。。。。 如果我的方法不需要登录,该如何处理?
王春生 2019-11-07 16:43:52
放在common/ isOpenMethod里面。
ldf 2019-10-11 09:13:32
我测试加入model层时出现syntax error, unexpected 'public' (T_PUBLIC) in module\hello\control.php on line 3 when visiting /zentaoPHP/?m=hello&f=world
model.php代码:
<?php

class helloModel extends model
{
public function world()
{
return 'Hello world!';
}
}

?>

control.php代码:
<?php

public function world()
{
echo $this->hello->world();
}

?>
王春生 2019-10-11 11:04:43
基础语法问题。这种问题就不应该问。
liyfn 2020-04-25 21:54:11
所以是怎么解决的呢
liyfn 2020-04-27 21:09:40
这个要怎么解决啊
捷足先登 2019-05-26 20:29:54
仅有control.php时能显示Hello world,按照例子增加model层时,显示如下错误:public function world() { echo $this->hello->world(); }
20:25:46 ERROR: the control hello not found in framework\base\router.class.php on line 1628, last called by index.php on line 31 through function loadModule.
in framework\base\router.class.php on line 2194 when visiting hello-world

这是什么问题?
王春生 2019-05-27 14:57:58
control写的不对。
huang 2021-01-16 16:37:05
您的问题解决了吗,我也遇到了类似的问题
zz 2022-02-07 15:19:07
完整的control.php代码为:

<?php
class hello extends control
{
public function world()
{
$this->view->helloworld = $this->hello->world();
$this->display();
}
}
CAD 2019-01-05 09:38:25
牛逼
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
换个名字试试。
小小 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
同问!
1/2
发表评论
评论通过审核后显示。