Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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_Model View Controller - Fatal编程技术网

Php MVC:模型与视图交互?

Php MVC:模型与视图交互?,php,model-view-controller,Php,Model View Controller,我知道一切都在通过控制器 但我经常读到这样的文章: 用户与视图交互 控制器要求模型更改其状态 当视图的状态发生变化时,模型通知视图 我没有第三个。为什么说模型会通知视图,而实际上它正在通知控制器,控制器正在通知视图?这看起来更像是一个桌面系统,而不是一个无状态系统,比如一个网站 但也许它是在谈论一些人如何喜欢从视图中查询模型 <?php foreach( $usersTableGateway->getUsers() as $user ): ?> <?php echo $u

我知道一切都在通过控制器

但我经常读到这样的文章:

  • 用户与视图交互
  • 控制器要求模型更改其状态
  • 当视图的状态发生变化时,模型通知视图

  • 我没有第三个。为什么说模型会通知视图,而实际上它正在通知控制器,控制器正在通知视图?

    这看起来更像是一个桌面系统,而不是一个无状态系统,比如一个网站

    但也许它是在谈论一些人如何喜欢从视图中查询模型

    <?php foreach( $usersTableGateway->getUsers() as $user ): ?>
    <?php echo $user ?><br>
    <?php endforeach; ?>
    
    
    

    我更喜欢获取控制器中的所有信息(准备控制器中的用户数组)并将其从控制器传递到视图。

    我确实偶尔看到MVC以这种方式描述或绘制。我不认为这是正确的,但我认为它是由许多显式或隐式地将控制器和模型组合在一起的实现产生的

    如果框架在控制器和模型之间的概念上的分离并不像它们应该的那样清晰,那么关于“模型在其状态发生变化时通知视图”的部分实际上是模型中的控制器位


    最后,MVC是一个主要依赖于清晰分离关注点的指南。如果您使用的框架是这样描述的。。。嗯,这不是真正的MVC。它可能会工作,但也可能以意外甚至未被检测到的方式失败。

    MVC是一个广泛的概念,有多种可能的实现。例如,页面控制器将逻辑从视图中分离出来,前滚轴也是如此。每个MVC框架在视图中呈现模型数据也有不同的方法——Zend使用了两个步骤


    您可以在视图对象和“模型”(模型本身就是一个非常复杂的野兽)之间建立观察者关系但我认为MVC模式的这一方面更多地与模式的原始上下文有关,即Galen上面的观点,让您的观点直接聆听您的模型并不违反MVC原则(请参阅)。ASAIK MVC的一条坚如磐石的规则是,你有一个肥胖、盲目的模型,它保护数据和业务逻辑,而不知道系统的其他部分。视图和控制器的描述方式以及它们与模型的关系没有那么严格的定义。

    +1同意这一点。最好在控制器
    $template->set('users',$usersTableGateway->getUsers()中执行类似操作