Answers:
当您放心使用PHP时,可以开始使用框架。而且您应该始终使用它们:
您可以创建自己的框架,但是我绝对不会推荐它。这很复杂,已经有很多好的框架,而且您不太可能会发现缺少的功能。此外,它们通常提供了向其添加您自己的功能的方法,而无需创建全新的功能。
在没有框架的情况下构建几页...实际上,您将开始通过反复试验来编写自己的框架。完成此操作后,移至框架并享受节省的时间。尝试构建自己的框架可以教会您一些知识,并且将帮助您欣赏已经存在的框架。
刚接触PHP时,我认为框架是浪费时间的复杂问题。现在,我将CodeIgniter用于甚至简单的项目。启动和运行大约需要1分钟,您已经拥有大量的出色库供您使用。而且,如前所述,大多数框架都是可扩展的,因此您可以随时添加所需的任何功能。
就像Niphra所说的那样,只有在没有框架的情况下可以使用PHP时才开始使用框架(即访问数据库,发送标头和内容,字符串处理,数据操作等)。就您的问题而言:
我什么时候需要使用像CakePHP这样的PHP框架?当您的项目扩展到几个PHP文件之外时;当您开始强烈地将逻辑分离为不同的元素并模块化/共享功能(会话等)时,便是应该使用框架的时候。
这个和其他类似的PHP框架为我提供了什么? 抽象化; 可以直接使用对象关系映射(ORM)来管理数据库中数据的结构和关系,而不是直接与数据库进行交互。大多数语言的大多数框架都提供ORM,以使其更易于与应用程序的数据库层进行交互。同样,框架通常将响应用户交互的各个层分开。最常见的分离是模型视图控制器(MVC)范例,简而言之,它将数据库逻辑抽象到模型(在许多情况下为ORM的接口),处理请求并与模型交互到控制器中,然后渲染实际的HTML / PDF / image / etc。进入视图。框架通常会提供其他工具,例如路由(以允许对请求URI进行复杂处理(例如:映射请求“http://example.com/users/1 “到控制器用户,然后控制器查找ID为1的用户模型以及会话和其他基本结构的抽象。
使用框架成为专业人士真的重要吗?不必要; 框架使生活更轻松;但您不必成为专业人士。框架提供了方便的抽象和标准化,但是在大多数情况下并不是必需的。
在阅读了一些答案之后,我首先要说的是,对于要使用的框架或是否要使用一个框架(作为专业人士),您通常没有太多选择。我不想吓到您,但是您将需要对PHP有足够的了解,以允许同时使用多个框架从一个框架迁移到另一个框架。
什么时候需要使用CakePHP之类的PHP框架?
对此没有统一的答案。作为专业人员,您将需要解决特定的问题,这将成为每个项目的时间和内容的决定因素,尤其是在客户有特定需求的情况下。但是通常来说,您将始终在PHP中使用某种形式的框架,除非您要修改或扩展具有自身框架的现有应用程序(例如Wordpress或PHPBB)。
这个和其他类似的PHP框架为我提供了什么?
正如德克所说,它们提供了抽象。这意味着它们采用通用的多步骤过程,并试图使其尽可能简单和简化。简而言之,他们尝试为常见任务提供“加水”解决方案。
使用框架成为专业人士真的重要吗?
一般来说,使用框架成为专业人士并不重要。但实际上,如果您至少不熟悉几个通用框架,就不会有很多职业。没有框架的PHP就像没有标准库的C ++。您不需要它,实际上,如果没有它,您可以做更多的事情,因为您将直接使用该语言的较低级构建块功能,但是这样做将需要更长的时间。
我可以创建自己的框架来提供我喜欢的功能吗?
是。实际上,即使无意间,您也可能最终会这样做。这样,我并不是说一个扩展的框架,而是更像一个基本功能和执行任务的脚本的工具包,它并不常见或通用,无法由普通框架处理。我的基本上是由各种文件系统,进程处理和带有一些不同的curl和stream / socket实用程序的rex-ex tid位组成的。
这是一个常人的事,这个人花了多年的经验来探索我自己的方式来与数据库进行对话并与在线API进行对话,并且直到现在才开始使用框架,如果您至少了解它们的作用(如果可能)的话,可以使用它们。
第一次使用数据库时,不要立即跳入RedBean,首先要手动使用DB。这样,您就可以对数据库的实际访存和操作有个透彻的了解,这确实有助于扩展性。然后,当您使用的框架无法完成您需要做的事情时,您还可以制定自己的解决方案。
一旦您了解发生了什么,就使用框架!它使事情变得容易得多。存储查询然后遍历结果的疯狂方式mysql_fetch_assoc
已经消失,减少为一个调用:$book = R::load( "book", $id )
。您将提高工作效率,并且可以更轻松地修复将来的错误或添加将来的功能。
当您发现自己一遍又一遍地做同样的事情时,请环顾四周,看看是否有一个框架可以完成您本来会做的相同的冗余工作。不要因为炒作而只使用框架。我个人喜欢CodeIgniter和Rasmus Lerdorf的“无框架PHP MVC框架” http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
我建议您仔细考虑为什么要使用框架x,y或z。每个框架不仅提供您不必实现自己的功能,还提供一种思考方式。只要看看Spring,JEE,Rails或Django。四个框架足以在短时间内完成Web应用程序。
但是,所有这四个人都对如何构建Web应用程序提出了自己的思考方式。如果这不符合您的需求或与您的口味不符,那么您将很难再进一步。
这是一个非常激进的比较,但也许建立一个小型图书馆确实更符合您的需求。但是了解框架肯定会帮助您在更大的团队中工作或找到新工作,因为这表明您对整个软件开发感兴趣。