这是我第一次发布这样的内容。我是编程/ php的完整n00b。我试图掌握所有教程,并希望创建一种框架,以便为Web数据库/应用程序提供基础项目。我想出了一些关于crud操作的文件,我知道这些文件肯定是可怕的代码。我想知道我是否可以提出一些建议,将这个“框架”提升到一个新的水平。我在OO上并不擅长,但我理解这些概念,所以我的功能更多了。我知道这些歌很糟糕,我不需要帮助认识到这一点。
我想在数据库调用方面提供一些帮助。我知道我应该使用PDO(以帮助注入),但我不知道如何将此代码转换为该结构。我也意识到至少我应该使用mysqli函数。再次,n00b。
我也知道对数据进行验证和消毒,但同样,对于这一点,我不知道从哪里开始。特别是如果我希望保持紧凑和小。从程序员的角度来看这些评论很有趣,但是嘿,你使用的是你的工作。我正在尝试掌握MVC并能够绑定AJAX和模板/皮肤,但其关键在于使用数据库。
我确实知道如何有一个配置文件适用于所有其他文件,以及如何导致索引,读取和删除的小文件。其他人得到一点时间。不包括文件让我很酷或任何东西。
我认为我很难理解MVC并构建项目,以便维护和调整项目更容易。我也意识到这些php文件中有很多html,这也是一个禁忌。我如何填写我所知道的差距(我知道每个文件的每一行都在做什么)。
代码可以在这里找到(可能不是sourceforge值得的,但我想帮助别人像我一样学习)。
https://sourceforge.net/projects/eleete/files/
答案 0 :(得分:3)
构建这样的东西需要花费大量的时间,在你这样做之前我会建议你研究一下开源CMS,比如Wordpress,看看它们是否比你自己创造一些工作的时间更适合你,原因我说这是因为一开始你可能认为为自己创建一个并不会太难,但是当你进入它时,你会发现有许多途径需要在安全性和功能方面进行探索。 / p>
但是,如果你仍然想要构建一些东西,最重要的是创建可重用且易于理解的代码。例如,如果你想为页面之类的东西创建数据库条目,你需要创建这样的函数,你可以传递诸如标题等变量。开始的一个好方法是创建从你的数据中收集数据的函数。 db,例如siteinfo()可以是一个返回充满站点信息的数组的函数。要确保每个文件都可以访问这些函数,您需要一个像functions.php这样的全局文件,例如,您需要将其包含在每个其他文件中。
请记住,构建一个框架是一项艰苦的工作,但是如果你做得恰到好处,那么你应该提高你的生产力 - 这是你在构建框架时需要考虑的事情,确保你不做任何事情。迂回的方式。简化,使其可重复使用,并使其功能强大。
答案 1 :(得分:1)
首先,欢迎来到社区!我希望你能在这里找到那些兴奋的人,让你们更多地参与编程工作。这是一个令人兴奋的地方。
我得到的印象是你咬了很多。我担心你也可以假设你可以从一开始就写出完美的程序,无论你在这个行业多久,这都是一个平坦的神话。
关于以前的观察,我的建议是选择一个简单的问题并尝试解决它。我最喜欢的推荐是简单的纸牌游戏 - 例如二十一点。像掷骰子这样的骰子游戏也适用于short, achievable, and interesting programs。这些项目的目的不是建立一个代码框架,就像你解决问题并将它们转化为计算机可以理解和解决的解决方案 - 你的代码一样。
从小开始会让你不会被提前淹没。开始的乐趣将让你在不可避免的障碍中保持动力,诱使你将计算机从关闭的窗口中扔出去。
所有这一切,我们仍然在这里提供帮助!针对具体问题的具体问题往往会得到最好的反馈,以及证明你在尝试解决问题方面至少完成了一些功课的问题。 Stack Overflow社区很乐意为您提供帮助,但不是讲义。祝你好运!
答案 2 :(得分:1)
使用干净简单的框架会更好。由于你对这些东西很新,我推荐CodeIgniter,因为它非常简单,速度快。它有助于实施您尚未完全熟悉的MVC框架,拥有您可能正在寻找的所有内置插件,并且拥有一个体面的社区。作为一个Zend家伙,我应该建议,但绝对不是最简单的开始。
MVC和OO是你在前进之前应该学习的概念。 This tutorial岩石。那里有很多MVC引子,但实质上它归结为分离你的数据层,视图层等。
PDO不一定是安全的,您只需要使用Mysql_escape_string
等来逃避您的SQL。我实际上并不是PDO的粉丝,因为它会调试它的猴子扳手。
由于您是新用户,我还建议您在服务器上使用Xdebug进行故障排除。它极大地缩短了调试时间。
答案 3 :(得分:1)
根据我的经验,除非你必须解决其他人尝试构建框架的不足,否则你不会真正理解如何自己构建一个框架。
任何类型的API或框架的关键特质之一是抽象概念。简而言之,当您发现自己重复代码时,请查找可以抽象出重复的位置。在构建框架时,关于这一点的诀窍是以可扩展,可用的方式进行,以便您拥有相互构建的部分。换句话说,抽象可以隐藏其他抽象。例如,从字段列表中抽象出组装SQL UPDATE
语句的工作非常好,但为什么应用程序页面必须检查字段列表是否正确?把它放在另一层后面,可以教授某个对象的有效字段。
此时出现的另一个关键质量是重构。在编程圈子中,有时会对“准备扔掉第一个”这句话进行抨击。它的真正含义是,您应该始终对重写代码的想法持开放态度,因为您已经想到了更好的方法。即使你必须重建调用它的代码。