组织一个PHP项目

| 这是什么 到目前为止,这是我所做的: 核心/ 控制器/(包含应用程序使用的控制器) models /(包含应用程序使用的模型) views /(包含应用程序使用的视图) base_controller.php(控制器每隔一个扩展) base_model.php(模型彼此扩展) 供应商/ phprouter /(一个简单的路由器类) pimple /(简单的DI容器类) configuration.php(包含所有应用程序配置) index.php(包括配置,供应商,基本模型,基本控制器,设置DI容器并路由请求) 在此处查看代码:http://pastebin.com/pxUpUvv6 请注意,给定的代码只是一个示例,因此控制器,模型,视图尚未安装到位。另外,它可能是越野车(未经测试),但现在并不重要。 请求流程 客户端请求index.php。 包括配置,供应商,基本控制器,基本模型。 DI容器和依赖项已初始化,我们现在可以将它们注入到任何地方。 我们将控制器映射到URL,路由器完成其工作。 提取了控制器(尽管如上所述,它不在示例代码中)。 我们做一些事情。 然后,该方法调用
::call_model()
,其中包括core / models /中的相应模型,然后从对应的模型类中调用我们正在使用的相同方法。 已获取模型。 更多东西。 然后,模型调用
::call_view()
\',其中包括core / views /中的相应视图。 将获取视图,并将页面呈现给客户端。 仅供参考:对应 对应的控制器,模型,视图的示例: 控制器
Controller_Products::list()
位于core / controllers / Controller_Products.php
Model_Products::list()
模型作为core / models / Model_Products.php 查看在core / views / Model_Products_list.php 面临的问题 实际上,我对这种结构感到不舒服。邓诺(Dunno),它似乎远非可扩展,可调节... 仅基本文件夹结构(根目录为
core{, /controllers, /models/, /views}
vendors
)对您来说看起来不错吗? 我觉得我应该在index.php之外获得ѭ6,对我来说似乎有点太大了。如果是这样,那么DI容器又如何呢? 也许如果我需要两个以上的外部库,最好不要手动一个接一个地添加它们?但是如何? 在我看来,将所有配置都放在一个文件configuration.php中,就像老式的PHP4。多亏了Pimple的强大功能,我可以将此配置直接嵌入其中,但是在哪里呢? 我认为我处理
::call_model()
(core / base_controller.php)和
::call_view()
(core / base_model.php)的方式有点尴尬。你同意吗?重做整个事情的简化方法是什么? 考虑到我所有的问题,将框架用作Symfony最终对我来说会更好吗? 如果不清楚,请随时提出。 谢谢。     
已邀请:
         是。 您可以同时使用自动加载和DI容器。有一个示例,如何将自动加载与命名约定一起使用。我建议使用spl_autoload。 使用自动加载,您可以删除所有(或几乎所有)包含文件。 我猜在index.php中。 是的,这是错误的方式。首先,尝试不使用静态方法。此外,模型应该具有带有描述性名称的方法,而不仅仅是“打电话给我,我将尽我所能”。这是更复杂的问题-您需要了解Controller和Model应该如何进行协作。作为变体,请阅读一些书籍。控制器应调用Model的方法,以获取某些情况下的数据。建模不仅是放置控制器代码的地方。不同的控制器可以使用不同的模型。模型也可以使用其他模型。 这个问题的答案不可能是客观的:)     

要回复问题请先登录注册