什么时候在 PHP 或任何其他语言中使用框架?
Posted
技术标签:
【中文标题】什么时候在 PHP 或任何其他语言中使用框架?【英文标题】:When are frameworks used in PHP or any other language? 【发布时间】:2011-07-20 23:20:36 【问题描述】:我们什么时候有必要在 php 中使用框架。我听说过 zend 框架和 symfony。我已经阅读过它们,但仍然不明白为什么我们在软件开发中使用这些框架。
【问题讨论】:
见***.com/questions/1851920/…、***.com/questions/2964140/…、***.com/questions/958258/…等 【参考方案1】:框架通常会为您提供您必须使用的样板代码,例如:会话管理、模板、数据库访问等。
就正确的软件工程而言,使用这些框架往往会促进正确的设计,例如MVC(Model, View, Controller). 等模式。通过使用这种模式,您可以提高代码的可重用性,separation of concern 等。
通过利用这些框架为您提供的数据库访问,您可以编写可以与数据库交互的高效模型,同时提高代码的可重用性。数据库要考虑的另一件事是安全性,例如 SQL 注入。现在的大多数框架都会自动保护您免受这些类型的攻击。如果您要编写自己的代码(没有框架),您最终可能会为 sql 注入打开某种查询。
对于控制器,这些框架倾向于提供某种 URL 映射。一个例子可能是domain.com/posts/edit/5
。然后框架将解析这个 url,并调用控制器“posts”,方法“edit”,并传入 id 5。如您所见,如果您没有使用框架,则必须编写所有这些自己编码,这会增加编码时间和更多出错的机会。
对于视图,模板系统通常可以帮助减少您编写的 html、css、javascript 等的数量。不仅如此,它们还为您的视图提供结构。换句话说,它们可以帮助您将视图放在合乎逻辑的目录/位置(在可重用性、易用性等方面)。
总结:
由于所有这些功能,您可以看到这不仅会减少系统中的错误/错误数量,而且还会减少开发时间。
当然,任何事情都有缺点,这也不例外。主要问题是学习这些新框架的学习曲线。很多时候,框架提供了很多东西,以至于你必须学习所有这些新特性才能启动和运行。
一些流行的 PHP 框架:
CodeIgniter
CakePHP
Zend Framework
Symfony
入门指南:
CodeIgniter
CakePHP
Zend Framework
Symfony
就以前从未使用过框架并想开始使用而言,我强烈建议CodeIgniter。学习曲线远没有其他曲线那么高,但提供了足够的样板代码和功能,它应该可以让您启动和运行。
如果你想做自己的研究(你应该这样做!),这里是所有流行的 PHP 框架的比较表:
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP_2
【讨论】:
是不是就像我调用为类创建一个对象然后我在代码中获得所有必需的功能一样。很抱歉,我没有完全理解你的观点。 我还在写,别担心:) 学习 symfony 或 zend 框架有多难。我正在用 PHP 做一个 NSF 基于 web 的项目。今年春天我有一些可交付成果。我实际上是从头开始为数据库管理等会话编写代码。我一直在开发 css 作为模板,然后我想可能我应该处理代码而不是外观,尽管它很重要。您能否提供这些框架的简单示例的链接,我如何使用它 包含一些入门链接和建议。 每个框架有什么限制。是否所有框架都尽可能广泛地工作?【参考方案2】:框架通常用于加速项目的开发。想象一下,除了基本的 php 函数之外,还有一堆额外的新函数可以帮助您处理登录、页面生成、数据库管理等问题。 基本上,制作框架是为了节省时间并在您每次创建新网站/等时停止重新发明***......
【讨论】:
【参考方案3】:我使用CodeIgniter 构建了一些网站和网络应用程序。
主要优点是您可以在一个一致的界面和一个包中获得许多预构建的组件,例如数据库抽象、会话管理、电子邮件发送工具等,因此您不必花时间寻找这些可能会或可能不会很好地协同工作的组件。
每个框架都有不同的感觉、学习曲线、局限性,您需要尝试并感受一下。
许多年前,我使用 Macromedia 的 Dreamweaver 和第三方扩展来构建我的 Web 应用程序。从那时起,Dreamweaver 归 Adobe 所有,并且第 3 方扩展已退出市场,因此我有没有支持的遗留代码。对我来说,被我的市场力量搞得一团糟,让我有动力去寻找一个“独立于桌面”的框架。
总结:作为 Web 开发人员,框架的主要好处是易于使用、组件可重用和更好地控制过时率。
【讨论】:
【参考方案4】:另一个没有提出的观点(我认为)是,不管框架如何,但假设它制作精良、成熟并且有一个社区,那就是它有一个强加给开发人员的结构,无论是 MVC 还是 REST,未来的开发人员在扩展或维护代码库时可以快速掌握。
因此,在精心设计(且成熟)的框架中,类、对象和结构的命名约定、文件和目录的结构、第三方代码的位置、模板系统、本地化/国际化等都会很好通过第三方或社区维护的文档定义和访问。
【讨论】:
以上是关于什么时候在 PHP 或任何其他语言中使用框架?的主要内容,如果未能解决你的问题,请参考以下文章
PythonC++Swift或任何其他语言会取代Java吗?为什么?