【问题标题】:Could I please get some help correcting my little beginners project?我可以得到一些帮助来纠正我的小初学者项目吗?
【发布时间】:2011-05-01 00:16:33
【问题描述】:

这是我第一次发布这样的东西。我在编程/php 方面是一个完整的 n00b。我试图掌握所有的教程,并想创建一种框架来为 web db/applications 的项目提供基础。我想出了一些用于 crud 操作的文件,我知道它们一定是非常糟糕的代码。我想知道是否可以得到一些建议,将这个“框架”提升到一个新的水平。我不擅长 OO,但我理解这些概念,所以我转而变得更实用。我知道这些歌曲很糟糕,我不需要帮助来识别这一点。

我想要一些关于数据库调用的帮助。我知道我应该使用 PDO(帮助注入),但我不确定如何将此代码转换为该结构。我也意识到至少我应该使用 mysqli 函数。再次,n00b。

我也知道验证和清理数据,但同样,我对这方面还很陌生,我不知道从哪里开始。特别是如果我希望保持它的紧凑和小巧。从程序员的角度来看,这些 cmets 很有趣,但是,嘿,你用你得到的东西工作。我正在尝试掌握 MVC 并能够配合 AJAX 和模板/皮肤,但它的关键是使用数据库。

我确实喜欢一个配置文件如何与所有其他文件一起使用,以及如何生成用于索引、读取和删除的小文件。其他人的时间更长一些。并不是说包含文件让我很酷或任何东西。

我认为我在理解 MVC 和构建项目以使其更容易维护和调整方面非常失败。我也意识到这些 php 文件中有很多 html,这也是一个禁忌。我如何填补从我所知道的(我知道每个文件的每一行在做什么)到我应该知道的空白。

代码可以在这里找到(可能不值得 sourceforge,但我想帮助其他人像我一样学习)。
https://sourceforge.net/projects/eleete/files/

【问题讨论】:

  • 为什么不为此使用现有的成熟框架?
  • 了解为什么要做某事。不是要学习如何在 xxx 框架中做到这一点。我想知道为什么要这样做,其他方式的负面影响是什么,并了解程序的每一行。
  • "理解为什么要做某事。而不是学习如何在 xxx 框架中做。" +100 - 很遗憾他们只允许我们奖励 +1。

标签: php database


【解决方案1】:

构建这样的东西需要花费大量时间,在您开始之前,我建议您研究开源 CMS,例如 Wordpress,看看它们是否更适合您,而不是花费数小时自己创建东西,原因我说这是因为一开始您可能认为为自己创建一个不会太难,但是当您开始使用它时,您会意识到在安全性和功能方面需要探索许多途径。

但是,如果您仍然想构建一些东西,最重要的是创建可重用且易于理解的代码。例如,如果您想为页面之类的东西创建数据库条目,您将需要创建函数来执行此操作,您可以将变量(如标题等)传递给该函数。一个好的开始方法是创建用于从您的数据中收集数据的函数db,例如 siteinfo() 可以是一个函数,它返回一个完整的站点信息数组。为了确保每个文件都可以访问这些函数,您需要一个全局文件,例如 functions.php,您需要将其包含在其他每个文件中。

请记住,构建框架是一项艰巨的工作,但如果您正确且彻底地完成它,您应该会大大提高您的工作效率 - 这是您在构建框架时需要考虑的事情,请确保您不是在迂回的方式。让它变得简单,让它可重用,让它变得强大。

【讨论】:

  • 这就是我要说的。我知道它很粗糙,但我想了解它是如何运作的。我不喜欢从框架或 CMS 开始的想法。我想知道每一行代码在做什么以及为什么。我知道我离那还有很长的路要走,但这就是我想去的地方。我意识到这有点让人难以接受,但我更想了解原因,而不是“就这样做,因为它有效”。感谢回复
  • 你知道,我很清楚你的感受,我不想用 jQuery 很长时间了,因为我以前必须理解每一行代码,但相信我,像 WP 这样的平台是真的很棒的工具,但是学习如何构建 CMS 是一种很好的学习方式,我从过去的经验中知道,我实际上写了一系列关于构建 CMS 的文章 - tomsbigbox.com/building-a-cms-part-1
【解决方案2】:

首先,欢迎来到社区!我希望你能在这里找到愿意将你更多的东西带入编程领域的人。这是一个令人兴奋的地方。

我觉得你有点咬牙切齿了。我担心您还假设您可以从一开始就编写完美的程序,无论您从事该行业多久,这都是一个彻头彻尾的神话。

对于前面的观察,我的建议是选择一个简单的问题并尝试解决它。我最喜欢的推荐是简单的纸牌游戏——例如二十一点。掷骰子之类的骰子游戏也适用于short, achievable, and interesting programs。这些项目的目的不是构建一个代码框架,而是构建一个代码框架,就像您剖析问题并将其转化为计算机可以理解并为您解决的解决方案(您的代码)的技能一样。

从小处着手可以防止您过早不知所措。开始的乐趣会让您在不可避免的障碍中保持动力,这些障碍会诱使您将计算机扔出关闭的窗口。

话虽如此,我们仍然在这里提供帮助!针对特定问题的特定问题往往会在此处获得最佳反馈,以及表明您在尝试解决问题方面至少自己完成了一些作业的问题。 Stack Overflow 社区很乐意为您提供帮助,但不提供讲义。祝你好运!

【讨论】:

  • 我比这更基本,我用一个数据库和一个表来记录通用项目。不过我明白。更具体。
【解决方案3】:

使用干净、简单的框架会更好。由于您对这些东西很陌生,因此我推荐 CodeIgniter,因为它非常简单且速度快。它有助于实施您还不完全熟悉的 MVC 框架,具有您可能正在寻找的所有内置插件,并且拥有一个体面的社区。作为一个 Zend 人,我可能应该建议这样做,但这绝对不是最容易上手的。

MVC 和 OO 是您真正应该在开始之前好好学习的概念。 This tutorial 岩石。那里有数十种 MVC 入门,但本质上归结为分离数据层、视图层等。

PDO 不一定是安全的,你只需要用Mysql_escape_string 或类似的东西来转义你的sql。实际上,我不是 PDO 的粉丝,因为它在调试时会很麻烦。

由于您是新手,我还建议您在服务器上使用 Xdebug 进行故障排除。它极大地减少了调试时间。

【讨论】:

    【解决方案4】:

    根据我的经验,除非您必须解决其他人尝试构建框架的缺陷,否则您不会真正了解如何自己构建一个。

    任何类型的 API 或框架的关键品质之一是抽象概念。简而言之,当您发现自己在重复代码时,请寻找可以抽象出重复的地方。当你构建一个框架时,关于这个的技巧是以一种可扩展的、可用的方式来完成它,这样你就有了可以相互构建的部分。换句话说,抽象可以隐藏其他抽象。例如,从字段列表中抽象出组装 SQL UPDATE 语句的工作很好,但是为什么应用程序页面必须检查字段列表是否正确?将其放在另一个层之后,该层可以被告知某个对象的有效字段是什么。

    此时出现的另一个关键品质是重构。 “准备扔掉第一个”这句话有时会在编程界流传开来。它真正的意思是你应该始终对重写代码的想法持开放态度,因为你已经想到了一种更好的方法来做到这一点。即使您必须重建调用它的代码。

    【讨论】:

    • 这就是我打算做的,一旦我意识到为什么它更好,就扔掉我拥有的代码以获得更好的代码。我不喜欢使用框架的想法,因为它消除了我为什么做某事的理解层。不只是因为这样做是正确的。但要理解它。
    猜你喜欢
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 2020-04-05
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多