📜  Laravel vs Symfony

📅  最后修改于: 2021-01-05 11:01:18             🧑  作者: Mango

Laravel与Symfony

Laravel和Symfony都是跨平台的php框架,它们可以加速Web应用程序的开发。

让我们了解Laravel和Symfony之间的区别。

  • 编程语言Symfony是用“通用php”编写的框架。在这里,通用php表示该框架是用通用代码编写的。每种编程语言都有一些基本的结构,这些结构使其独特且比其他语言更好。 php编程语言具有Laravel经常使用的一些魔术方法和特质,因此Laravel中的代码变得更短,更易于理解,并更改了应用程序的行为。
  • 数据库访问两个框架(即Laravel和Symfony)都以不同的方式访问数据库。 Symfony使用Doctrine,而Laravel使用Eloquent访问数据库。在Doctrine中,迁移是自动创建的;我们需要定义模型和模型中的字段。在Laravel中,可以更轻松地访问数据,但是我们需要一些有关SQL的知识。 Laravel的最大优势在于可能性的覆盖。当在Doctrine中出现某种情况时,该函数返回错误,但是对于Laravel,Eloquent基于“接受一切”。在Laravel中,无效数据也会被解析并转化为可预测的SQL。
  • 模板引擎Laravel和Symfony使用的模板引擎有所不同。 Laravel使用Blade,而Symfony使用Twig。刀片胜过树枝。使用Blade的优点是代码的可重用性。假设您创建了要在控制器和模板中使用的函数,那么我们需要在Twig中定义两次该函数。原因是模板不能使用php函数,而控制器也不使用模板。但是,在Blade中,可以直接使用功能意味着我们在控制器中定义的任何内容也可以在模板中使用。
  • 可伸缩性和模块化Symfony提供了可重用的组件,这些组件提供了更好的模块化。这两个框架,即Laravel和Symfony,都基于MVC架构。由于代码以适当的方式组织,因此对于复杂的大型项目,Symfony更为有用。
  • 身份验证Laravel包含内置身份验证系统,因此使身份验证非常简单,而Symfony具有自定义身份验证系统,该系统未像Laravel那样简化。
  • 数据库支持Laravel支持SQLite,MySQL,PostgreSQL,Redis,Microsoft BI,MongoDB等数据库,而Symfony支持Microsoft BI,MySQL,NoSQL,PostgreSQL,CouchDB,DynamoDB,MongoDB,MemcacheDB,GraphDB Membase,GemFire,Oracle等数据库。
  • 表单和验证器在Laravel中,可以以两种方式完成验证,即,可以以表单形式进行验证或通过请求的手动验证来完成。在Symfony中,我们可以验证模型。在Symfony中,很难以多种方式验证同一对象,但是在Laravel中,可以以创建或修改对象的不同形式添加相同的验证逻辑。定制验证可以在Laravel和Symfony中使用。如果我们要使用Laravel中不存在的验证规则,那么在Laravel中,我们可以使用After Validation Hook 。在Symfony中,我们需要创建一个新的验证器。
  • 缓存和性能两种框架都缓存视图,但是Symfony默认情况下缓存数据。 Laravel在不使用缓存的情况下比Symfony更快地工作,因此我们从未感到过在Laravel中使用缓存。因此,我们得出的结论是,Laravel的性能优于Symfony ,并且Laravel不需要像Symfony一样多的缓存。
  • 调试和开发工具调试对于应用程序非常重要。有了良好的IDE支持,还需要调试和概要分析工具来查找应用程序中的问题。当我们谈论IDE时,Symfony提供了比Laravel更好的支持。 Laravel的IDE支持非常少。 Laravel包含一个高级面板,而Symfony包含一个非常简单的面板。 Symfony显示所有问题和所有高级配置文件详细信息,而Laravel显示一些基本问题和一些基本配置文件详细信息。
  • 依赖注入应用程序具有很多相互依赖的服务和组件。我们使用ServiceContainer,这是一个php对象,用于存储有关依赖项的所有信息。 Laravel自动检测所有依赖关系,而在Symfony中,我们使用“ autowire”,可以通过在依赖关系配置中添加autowire:true来打开它。
  • ORM(对象关系映射) Laravel和Symfony框架都具有ORM功能。需要ORM才能将记录从代码中的对象映射到数据库。为了实现这一点,我们需要创建一个与数据库交互的模型。 Laravel使用Eloquent,而Symfony使用Doctrine与您的数据库进行交互。与学说相比,口才更易于使用和友好。