I mean, PHP is technically a server-side language right?
是的,没错。(虽然它可以在本地使用,但它甚至可以编译生成桌面应用程序二进制文件等。)
So does the fact that PHP can generate "View" elements change its role in the programming pattern?
不,核心“视图”概念是它与应用程序其他部分的分离。理想情况下,“视图”层中不会有任何业务逻辑、数据库查询等。例如:首先,你做所有的计算和操作。作为最后一步,您将结果转换为“视图”以供输出(如 HTML、XML 或 JSON...) 您没有将“echo”语句与 SQL 查询混合在一起。
Do I have it right that this is the controller?
在您的描述中,我们有两个不同的东西:一个可以称为“路由器” - 您可以在其中根据 HTTP 请求确定要调用的函数/方法。
在这种情况下,“控制器”就是那些函数,它们依次调用数据库读/写函数和视图构建函数。控制器与模型交互,并传递输出。它是应该与数据库交互的模型。
I am assuming that the model is the set of functions and classes I call periodically?
模型通常是读取和写入数据库的一组函数。这是主要的现实世界用法。但这不是“模型”的定义——它只是最常见的形式。
例如:如果您有一家销售产品的虚拟商店。然后,您将拥有一个“产品”模型,即处理将新产品插入数据库、更新产品信息、计算其价格以及您可能想要在“产品”中执行的所有其他操作的类”。这些方法必须在任何控制器、任何路由、任何视图中工作——这是模式分离/责任组织的一个目标。您应该能够使用相同的商店模型创建一个全新的前端网站。
whether or not a programming pattern can apply to more than one programming language even though one is client-side and another is server-side.
是的。我们在一个应用程序中使用许多不同的语言:HTML、JavaScript、PHP、SQL 等等。整个应用程序可以遵循一组模式。每种语言都可用于在模式中执行一个或多个角色。
Am I even following a programming pattern? If I am not or am somewhat close to one, does it matter if I am not following a pattern exactly?
是的,你是。我认为,即使你没有它的名字,即使你遵循“你自己的模式”,你肯定会遵循一些模式,否则你将无法构建你的应用程序。这种模式可以是 MVC、ABC、XYZ、CSM 或其他。当然,如果您学习了这些概念,您就可以使用这些概念与其他开发人员讨论您的应用程序代码。学习当然是一件好事,但是...
不,如果您没有完全遵循模式,那“没关系”。您最终可能会创建一个新的、增强的、更好的模式!有时担心适应某种模式可能会破坏你的创造力。不要过度担心它。
说了这么多,我认为你做对了,想知道、理解甚至掌握这些模式及其概念。MVC 是程序员理解的重要内容。一位好老师可以提供帮助。阅读好书和文章。SO的问题和答案。一些谷歌研究......而且,最重要的是,编码经验。如果你有一个实际的目标要达到,一个可以编写代码的应用程序,并在实践中应用你学到的东西,你就会逐渐理解它们。