gpt4 book ai didi

php - 组织一个PHP项目

转载 作者:可可西里 更新时间:2023-11-01 12:38:58 24 4
gpt4 key购买 nike

它是什么

这是我到目前为止所做的:

  • 核心/
    • controllers/ (包含应用程序使用的 Controller )
    • models/ (包含应用使用的模型)
    • views/ (包含应用使用的 View )
    • base_controller.php ( Controller 每隔一个扩展)
    • base_model.php (模型每隔一个扩展)
  • 供应商/
    • phprouter/(一个简单的路由器类)
    • pimple/(一个简单的 DI 容器类)
  • configuration.php (包含所有应用配置)
  • index.php (包括配置、供应商、基本模型、基本 Controller 、设置 DI 容器和路由请求)

请在此处查看代码:http://pastebin.com/pxUpUvv6
请注意,给定的代码只是一个示例,因此 Controller 、模型和 View 尚未到位。此外,它可能存在问题——因为未经测试——但现在这并不重要。

请求流程

  1. 客户端请求index.php
  2. 包括配置、供应商、基础 Controller 、基础模型。
  3. DI 容器和依赖项已初始化,我们现在可以将它们注入(inject)到任何地方。
  4. 我们将 Controller 映射到 URL,路由器完成它的工作。
  5. 获取 Controller (尽管这不在示例代码中,如上所述)。
    • 我们做了一些事情。
    • 该方法然后调用 ::call_model(),其中包括来自 core/models/ 的相应模型,然后调用我们正在使用的相同方法模型类对应。
  6. 模型已获取。
    • 更多内容。
    • 模型然后调用 ::call_view()',其中包括来自 core/views/ 的相应 View 。
  7. 获取 View 并将页面呈现给客户端。

仅供引用:对应

Controller 、模型、 View 对应的例子:

  • Controller Controller_Products::list() 位于 core/controllers/Controller_Products.php
  • 模型 Model_Products::list()core/models/Model_Products.php
  • 查看 core/views/Model_Products_list.php

面临的问题

其实我对这个结构有点不适应。不知道,它似乎远非可扩展的、可调制的……

  1. 基本的文件夹结构——core{,/controllers,/models/,/views}, vendors 在根目录——你觉得不错?
  2. 我觉得我应该在 index.php 之外获取 __autoload(),这对我来说似乎有点太大了。如果是这样,那么 DI 容器呢?
  3. 也许如果我需要两个以上的外部库,最好不要手动将它们一一包含在内?但是如何呢?
  4. 将所有配置放在根目录下的 configuration.php 文件中,在我看来就像老式的 PHP4。感谢Pimple的力量,我可以将此配置直接嵌入其中,但是,在哪里?
  5. 我认为我处理 ::call_model() (core/base_controller.php) 和 ::call_view() (< em>core/base_model.php) 有点尴尬。你同意吗?重做整个事情的简化方法是什么?
  6. 考虑到我所有的问题,最终使用像 Symfony 这样的框架对我来说会更好吗?

如果有什么不清楚的地方,请随时提问。
谢谢。

最佳答案

  1. 是的。
  2. 您可以同时使用自动加载和 DI 容器。 There is example ,自动加载如何与命名约定一起使用。我建议使用 spl_autoload。
  3. 使用自动加载,您可以删除所有(或几乎所有)包含。
  4. 我猜是在 index.php 中。
  5. 是的,这是错误的方式。首先,尽量不要使用静态方法。此外,模型应该具有具有描述性名称的方法,而不仅仅是“给我打电话,我会尽我所能”。这是一个更复杂的问题——您需要了解 Controller 和 Model 应该如何合作。作为变体,阅读一些书籍。 Controller 应该调用模型的方法,以获取某些情况下的数据。建模它不仅仅是 Controller 代码的地方。不同的 Controller 可以使用不同的模型。模型也可以使用其他模型。
  6. 这个问题的回答不能客观:)

关于php - 组织一个PHP项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com