建立自己的PHP框架

时间:2010-09-29 16:09:00

标签: php frameworks build email

我有兴趣构建自己的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的类和对象,但似乎无法理解它们,因为没有可理解/简单的教程。

10 个答案:

答案 0 :(得分:35)

人们会告诉你不要编写自己的框架,使用现有的框架。不要听他们的。这是一个很好的学习经验,可以帮助您理解使其他框架对您更有意义的概念。

在能够使用其他人的框架之前,我个人需要更好地理解两件事(显然我自己编写):

  1. OOP
  2. MVC
  3. 我花了几天时间阅读关于PHP的每个OOP教程和MVC上的每个教程/ wiki页面。然后作为一种学习经历,我编写了自己的框架。然后我从错误中吸取教训,从头开始编写另一个框架。我可能写了5个版本。然后我决定尝试代码点火器。经过所有的阅读和练习,我终于理解了它。

    从那以后我只使用其他人的框架。

答案 1 :(得分:7)

像其他人一样,我看到只有没有经验的用户试图编写框架才能获得积极的收益。如果他们将现有选项视为模型,并且实际上尝试使用新代码并因此以修复它们的目标来识别其弱点,那么它可以是快速开发知识的好方法。也就是说,对于一个非常新的用户,我可能会考虑在生产应用程序中使用它;再说一遍,如果应用程序的核心代码是由同一个用户编写的话,可能不会产生太大的影响。

话虽如此,框架本质上是非常具有建筑性的,因此也许不是开始的最佳场所。一个简单的实用程序代码库要好得多,而且正是OP正在做的事情(除了术语问题)。对他有好处。

至于在变得严肃的时候总是跳上现有的框架潮流,我对此有着深刻的保留。首先,没有完美的框架,甚至没有任何框架对于各种目的而言都是微不足道的。与为其目的手动调整的代码相比,大多数通用框架都是过于复杂的性能树。因此,对于从事复杂的实际应用程序的经验丰富的团队来说,GP框架通常是个坏主意。这就是为什么当涉及到这样的框架时,我更喜欢那些像Zend那样的东西,让你在不必双脚跳入的情况下挑选你需要的功能。

更关键的是,在我开发软件的大约30年里,我已经看到了许多框架,即使是市场饱和度接近100%并且主要供应商支持的框架,只需死。发生这种情况时,开发人员陷入困境。不,开源并不能缓解这个问题。如果需要很多经验丰富的人才来开发并维护一个大型框架,那么公司内部的一个小团队 - 通常只有一两个真正有经验的人 - 如何在不受欢迎的情况下实际维护项目开始死?这也发生在较小的代码项目中:见证许多曾经流行的PEAR图书馆现在发现自己的死亡状态。

答案 2 :(得分:2)

对于某些想法,查看此simple php framework by Tyler Hall可能会有用。

祝你好运!

答案 3 :(得分:2)

如果您想使用框架供个人使用,您应该使用已建立的开源产品之一,例如CakePHPsymfonyZendCodeIgniter 。这些框架已由有才华的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']字段,更不用说人们只是将它用于垃圾邮件了。