代码之家  ›  专栏  ›  技术社区  ›  Corey Trager

对于使用php而不使用任何框架(cakePHP、Smarty)进行CRUD,将php代码组织成文件的最佳方法是什么?

php
  •  2
  • Corey Trager  · 技术社区  · 16 年前

    假设我有一个数据库表“widgets”

    如果有一个index.php,其中包含一个用于不同操作的大switch语句,比如“list_widgets”、“edit_widget”、“new_widget”、“delete_widget”。。。然后这些动作都放在一个单独的文件里?

    或者其他方式?

    编辑(阅读第一个答案后)。我真的在问,我硬盘上的文件名是什么。如果我要创建一个网站,只编辑一个小部件表,我的硬盘上的文件名称会是什么?

    5 回复  |  直到 16 年前
        1
  •  1
  •   Noah Goodrich    16 年前

    如果这是一个使用PHP的学习练习,那么您的具体目标是什么?你想实现一个完整的MVC架构吗(只是为了练习的目的)?是否要使用将请求路由到特定控制器的前控制器?或者你想建立一个简单的单脚本网站,只能够编辑你的小部件表?

    this article by Rasmus Lerdorf 其中Rasmus讨论了如何在不使用现有框架的情况下构建一个简单的MVC应用程序。

    • 创建一个文件(WidgetsTable.php),其中包含与表直接交互的函数。例如insert()、update()、delete()、fetchAll()、createNew()
    • 创建一个文件(index.php或widgets.php),您将直接与之交互(在某些范例中,这将是页面控制器)。此文件将包含诸如createAction()、listAction()、findAction()、showFormAction()等函数。这将是进行调用的页面,此页面中的函数将与您在第一个文件中创建的函数(或类方法)进行交互。
    • 创建名为views或templates的文件夹,并为widgets.php中的每个操作创建相应的视图或模板文件。例如,您将创建list.php、showForm.php、create.php。

    这将确保您有适当的关注点分离,并且如果您发现需要的话,它将使以后调整整个项目结构更加容易。

    祝你的学习计划顺利!:-)

        2
  •  1
  •   Mark Biek    16 年前

    我将创建一个Widget类并给它edit()、new()和delete()方法。然后可以在某个地方使用list()函数来构建一个小部件实例数组。我可能会创建一个WidgetList类( WidgetList.php文件 ),即使它最初只是数组的包装器。

    一开始,我只想 类的文件和index.php来处理各种请求。

    我总是确保包含我的类的文件与类本身具有相同的名称(通常每个文件一个)。这样就更容易找出东西的位置,也更容易使用 __自动加载 功能。

    .htaccess接口 创建友好URL的文件,将不同类型的请求发送到 index.php索引 . 大致如下:

    Options ExecCGI FollowSymLinks Includes MultiViews
    
    RewriteEngine On
    RewriteRule /new index.php?action=new
    RewriteRule /edit/([0-9]+) index.php?action=edit&widget_id=$1
    

        3
  •  0
  •   Rob Elsner    16 年前

    如果是/widget/edit.php或/widget/new.php,查看文件结构可能会更容易

    通过这种方式,您可以只知道模块名和他们要执行的操作,就可以将人们重定向到其他模块。

    另外,这将允许您更容易地实现url重写,以便在您获得index.php和一些重写规则后,它看起来像widget/edit/2。

        4
  •  0
  •   andyk    16 年前

    我确信这可能是一个品味问题,但我发现为一个表创建3个文件(list、add、edit)足够灵活,同时又易于理解,特别是对于刚开始使用php的开发人员。

    这样,每当需要在另一个表上执行CRUD时,只需为它创建另外3个文件。

    ...
    includes/
    views/
    add_member.php
    edit_member.php
    list_member.php
    add_widget.php
    edit_widget.php
    list_widget.php
    ...
    

    具有 includes/ views/ 包含各种要包含的片段文件的文件夹,如页眉、导航、页脚等。

        5
  •  -1
  •   Luca Matteis    16 年前

    http://www.phpobjectgenerator.com/

    它为数据库表生成非常好的CRUD格式的对象。