Laravel:解释基本概念。 第一部分:理论

朋友,我们有个好消息。 八月,我们在OTUS开设了新课程“ Framework Laravel” ,但是有太多人想学习,但并不是每个人都能加入。 新的视频流将从10月底开始! 我们正在等待所有人,而且传统上,在课程开始前夕,我们共享有用的材料。



在本文中,我们将了解Laravel的理论基础-框架本身,框架的历史以及其中使用的基本概念和概念。 本文适合那些已经掌握PHP基础知识,试图使用小型CMS系统编写第一个站点,但尚未尝试使用PHP框架并且不了解其主要优点的初学者。
因此,Laravel是一个相对较新的Web框架(首次发布于2011年)。 Laravel从另一个后端框架(例如Rails)中获得了最好的收益,但是现在Laravel在流行度方面已经超过了它。 在撰写本文时,最新版本是6。



不是框架,而是整个生态系统


这是什么意思? 如果您以前只参与过前端开发,那么我可以将Laravel与Angular进行比较:从一条为您生成新项目的代码行中,您几乎可以得到所有东西(当然,没有项目的前端部分,但是会有2-3个团队,结果将是到位)。 就PHP开发本身而言,Laravel几乎具有您可能需要构建可靠的后端应用程序的所有地方:PHPUnit是用于测试的框架,Artisan是用于数据库迁移,模型创建和其他设置的命令行界面应用程序,一个集成的Homestead服务器,您可以在其中创建一个虚拟环境,以及使用路由,处理中间件以及使用Blade模板舒适地链接视图。

我们将尝试按顺序分析所有复杂的概念。 我提醒您:本文只是针对初学者的理论介绍。 实际示例将在以下部分中进行

宅基地

Laravel的理念是为您提供尽可能多的即用即用工具,并且具有独特的便捷性,可靠性和易用性。 这就是为什么Homestead是文档中第一个提到的原因。

Laravel Homestead是预装的Vagrant-盒子。 这是什么 读者最有可能使用XAMPP,Abyss Web Server的程序集,或下载该服务器独立运行所需的所有组件(Apache,PHP,PHPMyAdmin,MySQL等)。 您可以在此处找到Homestead中已安装的完整列表。 为什么这样做呢? Homestead创建了一种“虚拟环境”,该环境在与服务器上相同的环境中运行,并具有相同的程序。 Homestead可以快速,轻松地重新创建其“虚拟”盒子,如果您不小心弄坏了东西,也不必担心很长时间。

但是,宅基地Laravel并没有就此结束。 如果您使用的是Mac OS,则需要尝试简约的Valet,它没有很多功能,但安装起来非常容易。 还有大量其他软件包-这是一个完整的生态系统!



数据库迁移


对于初学者来说,“数据库迁移”一词听起来似乎很吓人。 我希望读者知道数据库的用途(原则上,显然是用于存储信息),甚至在他的生活中写的不只是SQL命令中的“ SELECT * FROM Customers” 。 那应该足够了。

因此,迁移是一种控制系统,用于使用表构造函数将表传输到KB。 通过迁移,您可以避免在大型项目的数据库中与其他团队的成员一起构建表的过程中发生错误和冲突。 另外,这将允许您不使用MySQL WorkBench或PhpMyAdmin之类的工具,而是直接通过代码与数据库进行交互,具体取决于数据表中项目的需求。 添加和删​​除表记录在迁移的历史记录中,现在至少提提夫犬会减轻头痛。





ORM


ORM是一个对象关系映射系统,它将数据库与面向对象的编程概念相关联。

乍一看听起来很吓人,但这与数据库的迁移直接相关:每个类都有自己的类-一个仅用于处理此表的模型。 这样就不会在数据库本身中滋生不必要的工作,而是直接从项目中再次与之交互。 结果,事实证明既方便又可靠。 当然,掌握模型生成的命令和功能将花费一些时间,但是创建具有大量表的大型项目将花费更多的时间。

刀片-模板:方便的视图视图


Blabe-模板提供了方便地绑定视图的机会。 这是本机PHP的外观:

<?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/header.inc.php"); ?> <div class="catalog"> <div class="catalog-filters"> </div> <div class="catalog-products"> </div> <div class="catalog-pagination"> </div> </div> <?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/footer.inc.php"); ?> 

 <html> <head> </head> <body> @extends('header') @extends('catalog') @extends('footer') </body> </html> 

同意,看起来更整洁了! 当然,实际上,这是控制器代码,并从其余Blade模板中导出,但是在大型项目中,这样做只会更加方便。



工匠的好助手


Artisan是Laravel附带的命令行界面。 它使您可以直接从命令行生成模型,控制器,新测试,通知。 这比从某个地方复制一个类模板甚至从某个地方用钢笔书写要方便得多。

应用测试


如果您想通过TDD / BDD(通过测试进行开发/通过行为进行开发)来开发项目,则该套件中包含PHPUnit(支持诸如Browser / Unit / Feature之类的测试),以及用于生成假Faker内容的程序包(例如,在测试数据库时,因为您不必自己填充内容(用户通常会在其中添加内容)。

许多令人愉快的事情


您是否希望通过社交网络进行身份验证以快速出现在您的应用程序中? 没问题,Laravel Socialite急忙营救。 是否要配置缓存? 没问题,立即可用。 您是否有许多托管在各种服务VPS上的项目? Laravel Forge就位。 需要WebSocket,例如聊天吗? 没问题 因此它可以持续很长时间。

我为什么要教这个Laravel?

毫无疑问,现在Laravel占据了最重要的PHP框架的位置。 现在,根据Github的说法,Laravel的存储库约为195k,Yii的存储库为35k,Symfony的存储库为43k。 这可能不是最诚实的比较,但是为什么不尝试使用Laravel呢?

Source: https://habr.com/ru/post/zh-CN470794/


All Articles