我有兴趣构建自己的php框架供个人使用,以使我的编码生活更轻松。我正在这样做,因为我现在对PHP有用(有点),并且似乎无法使用任何框架。
我有一个在.php文件中加载函数的想法。就像我已经开始做的那样,发送邮件功能的我已经简化了它(供我使用):
function sendmail($to, $message, $subject, $from){//USE sendmail($to, $message, $subject, $from)
$headers = "From:";
$headers .= $from;
$headers .= "\r\n";
$headers .= "Reply-To:";
$headers .= $from;
$headers .= "\r\n";
$headers .= "X-Mailer: Drupal\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $message, $headers);
}
然后将以联系表格形式使用:
sendmail($_POST['to'], $_POST['message'], $_POST['subject'], $_POST['from']);
这个邮件功能对我有用。
但是,我完全不确定这样做是否正确。我已经查看了php的类和对象,但似乎无法理解它们,因为没有可理解/简单的教程。
答案 0 :(得分:35)
人们会告诉你不要编写自己的框架,使用现有的框架。不要听他们的。这是一个很好的学习经验,可以帮助您理解使其他框架对您更有意义的概念。
在能够使用其他人的框架之前,我个人需要更好地理解两件事(显然我自己编写):
答案 1 :(得分:7)
像其他人一样,我看到只有没有经验的用户试图编写框架才能获得积极的收益。如果他们将现有选项视为模型,并且实际上尝试使用新代码并因此以修复它们的目标来识别其弱点,那么它可以是快速开发知识的好方法。也就是说,对于一个非常新的用户,我可能会考虑在生产应用程序中使用它;再说一遍,如果应用程序的核心代码是由同一个用户编写的话,可能不会产生太大的影响。
话虽如此,框架本质上是非常具有建筑性的,因此也许不是开始的最佳场所。一个简单的实用程序代码库要好得多,而且正是OP正在做的事情(除了术语问题)。对他有好处。
至于在变得严肃的时候总是跳上现有的框架潮流,我对此有着深刻的保留。首先,没有完美的框架,甚至没有任何框架对于各种目的而言都是微不足道的。与为其目的手动调整的代码相比,大多数通用框架都是过于复杂的性能树。因此,对于从事复杂的实际应用程序的经验丰富的团队来说,GP框架通常是个坏主意。这就是为什么当涉及到这样的框架时,我更喜欢那些像Zend那样的东西,让你在不必双脚跳入的情况下挑选你需要的功能。
更关键的是,在我开发软件的大约30年里,我已经看到了许多框架,即使是市场饱和度接近100%并且主要供应商支持的框架,只需死。发生这种情况时,开发人员陷入困境。不,开源并不能缓解这个问题。如果需要很多经验丰富的人才来开发并维护一个大型框架,那么公司内部的一个小团队 - 通常只有一两个真正有经验的人 - 如何在不受欢迎的情况下实际维护项目开始死?这也发生在较小的代码项目中:见证许多曾经流行的PEAR图书馆现在发现自己的死亡状态。
答案 2 :(得分:2)
对于某些想法,查看此simple php framework by Tyler Hall可能会有用。
祝你好运!答案 3 :(得分:2)
如果您想使用框架供个人使用,您应该使用已建立的开源产品之一,例如CakePHP,symfony,Zend或CodeIgniter 。这些框架已由有才华的Web开发人员开发和测试多年,并且很可能不仅满足您的需求。 您应该制作自己的框架的唯一时间是出于教育目的,或者现有框架不符合您的要求。无需重新发明轮子。
来自wikipedia:
该框架旨在缓解这一问题 与常见相关的开销 在Web上执行的活动 发展。例如,很多 框架提供库 数据库访问,模板框架 和会话管理,他们经常 促进代码重用。
这正是这些框架的目标,并且非常成功。
通过使用这些,您还将学会欣赏他们的解决方案,并了解他们如何使用OOP进行Web开发,增加您作为开发人员的知识。
答案 4 :(得分:2)
其他人已经回答了你的框架问题(只为构建学习价值的东西,否则学会使用现有的更好的成熟框架和库之一)但我只是想用你的代码指出一点点,整个点在var之前有一个sigil $是你可以轻松做到的
$headers = "From:$from\r\n";
而不是
$headers = "From:";
$headers .= $from;
$headers .= "\r\n";
答案 5 :(得分:1)
这可能过于苛刻,但是:除非您完全理解面向对象编程,否则不要考虑创建自己的框架。当您获得更多经验时,OOP知识将从您的程序编程演变而来 创建一个包含常用函数的PHP文件是一个不错的主意,我会说它去了。但是不要把它称为框架:)
答案 6 :(得分:1)
如果您甚至不知道构建框架的基本原理是什么,特别是模式,并且没有完全基于OOP并且能够轻松地编写它,那么您可能会如何实现目标?通过自己编写代码,你不一定会学到很多东西,也就是说,如果你编写错误的代码40次就不会教你一件事(顺便说一句,这不是对你的个人批评),而是通过阅读其他人的代码,这两者都是好的,坏的,无动于衷的,你会学到的。
答案 7 :(得分:1)
通常,框架有一个特定的目标。框架可能支持CMS,3D引擎,数据访问系统等......您可能经常会看到几个框架一起使用来实现最终目标,例如使用Spring,Hibernate和JavaEE来构建基于Java的网络应用程序。
从它的外观来看,您将所有喜爱的功能收集到一个文件中(或者按功能将它们分组到不同的文件中?)。这可能很有用,但我不会称之为框架。它真的是一个图书馆。如果您的所有功能都旨在支持精美的电子邮件功能,那么请学习OOP,并构建一个框架,其唯一目标是为花哨的电子邮件功能提供易于使用的界面。
答案 8 :(得分:1)
我还打赌另一个框架。有简单的社区。您可以通过三种方式帮助自己:从许多贡献的模块/良好的结构开始,阅读高质量的代码并获得大型社区的支持。
这里有一个包含许多流行框架和比较的列表 - phpframeworks.com。我也可以推荐你CodeIgniter - 适合初学者,非常简单,同时基于MVC。
答案 9 :(得分:1)
这不能解答您的框架问题,但如果您使用:
$headers = "From:";
$headers .= $from;
$headers .= "\r\n";
和
sendmail($_POST['to'], $_POST['message'], $_POST['subject'], $_POST['from']);
人们会尝试通过发布
将额外的电子邮件标题注入您的$ from字段'Name\r\nAnyotherheader:date\r\n'
到 $ from 字段。
如果你允许他们使用$ _POST ['to']字段,更不用说人们只是将它用于垃圾邮件了。