MVC应该如何在CodeIgniter中工作

Kye*_*e R 10 php model-view-controller codeigniter web

作为一个大多数自学成才的程序员,我在设计模式等方面已经迟到了.我正在使用CodeIgniter编写一个劳动管理Web应用程序.

我在学校做了一些MVC ASP.NET/C#和Java,并且惯例是你的模型主要由代表实际对象的类组成,但也抽象了所有的数据库连接等......这是非常标准的MVC东西从我收集到的.

我想我说对,CI完全看不到数据库连接(除非你去看),这对于课程来说是标准的,你可以创建的模型可以将'通用'CRUD方法抽象得更多创建一些对特定模型更有用的方法.

我遇到问题,因为它与我习惯使用MVC的不同之处在于,每当你说...从数据库返回一行时,惯例就是将它放在一个关联数组或标准对象中使用表示行中数据的属性.

在ASP中,您可以构建实际的类来存储此信息.比如你有一个House类和数据将被存储为属性(例如bedrooms,bathrooms,address)和方法将是有用的东西,你可以对数据进行修改(如printInfo()可能print("$address has $bedrooms bedrooms and $bathrooms bathrooms!')).

我得到的印象 - 仅仅来自我在互联网上看到的代码 - 这不是标准的做事方式.你应该只使用数组或通用对象,并说...做$this->house_model->print_info($houseobject)而不是$houseobject->print_info();

谢谢.

Tom*_*m B 25

尽管它声称相反,Codeigniter根本不使用MVC(事实上,很少有Web框架可以做到!)它实际上使用PAC(表示 - 抽象 - 控制)架构.本质上,在PAC中,表示层由演示者(CodeIgniter调用控制器)提供数据,而在MVC中,View从模型中获取自己的数据.由于MVC的错误标记,存在混淆.

因此,CodeIgniter(以及大多数其他流行的Web框架)不鼓励使用正确的模型,而只是使用非常基本的数据访问它的位置.由于"胖控制器",这会导致大量问题.与域相关的代码都不可重用.

进一步阅读:

这是PHP社区中一个普遍存在的混淆点(MVC与PAC的文章将这个问题视为来自PHP社区的问题.这个问题是在2006年编写的,没有任何改变,如果有什么事情变得更糟,因为有更多的框架和教程教导错误的MVC定义.)以及为什么人们看到来自Web开发之外的背景的"MVC"PHP代码可以理解地变得混乱.PHP中的大多数"MVC"实现都不是MVC.你认为模型应该是正确的结构是正确的,CodeIgniter将自己标记为MVC是错误的.