社区聚焦:David Cochrum
让我们认识一下 David Cochrum,dotenv-vault-laravel 的创建者。他是一位全栈软件工程师,专门从事 PHP 和 JavaScript 开发。
在这篇聚焦文章中,我向他提出了一些关于 Laravel 以及 .env.vault
文件格式的问题。
问题 1:Laravel 生态系统
您在使用 Laravel 有一段时间了,您观察到框架及其生态系统有哪些重大变化?这些变化如何影响您的开发方式?
多年来,我一直使用 Laravel,我发现它越来越方便,学习曲线也越来越短。当然,Laravel 在其方法中相当有主见,但这些观点涵盖了绝大多数用例,通常使框架易于使用。
以创建、读取、更新和删除 (CRUD) 操作为例。网络应用程序的很大一部分都是对资源模型进行的 CRUD 操作。Laravel 在 引入资源控制器 和 路由模型绑定 时添加了一个很好的便利功能。只要您遵循 Laravel 的约定,大多数样板工作都会自动完成。这反过来又使开发人员能够在无需忍受无聊的情况下快速完成更多功能。
我认为 Laravel 的流行程度很大程度上归功于这些有主见的便利功能。因此,如今通过 Packagist 和 GitHub,几乎可以添加任何常见功能的软件包。第三方软件包还受益于自动发现,以至于大多数软件包只需包含 Composer 依赖项即可添加。这些自动发现的软件包在您的应用程序中的集成和配置非常轻松,通常除了安装之外无需任何进一步修改。
现在,计算机科学的纯粹主义者也会告诉您,Laravel 的一些约定和便利功能是以破坏某些编程范例和原则为代价的。虽然这是不可否认的,但恕我直言,Laravel 在原则和实用性之间取得了很好的平衡。当然,Facade 是反模式的一个例子,但我认为,如果使用得当,其好处将大于破坏规则的代价。
早在我开始真正的应用程序开发时,我上级的资深人士决定将我们的重建基于 Symfony。虽然这提供了一些低级便利,但也决定 Symfony 验证包不足以满足我们的需求,因此每个 CRUD 模块都需要为每个表单创建复杂的验证器类。我认为我们在重新发明一个非常不错的轮子上浪费了很多开发人员时间/资源。现在回顾这段时间,我认为这是一个巨大的错误。是的,这是更有原则的做法,但我认为,通过编写自己的验证而不是利用广泛使用的软件包,我们并没有获得任何好处,如果有的话。
问题 2:Laravel 的优势
Laravel 以其优雅的语法和强大的功能而闻名。您能从您的经验中分享一个例子,说明 Laravel 如何在一个您参与的项目中独具优势,也许是其他 PHP 框架无法比拟的优势?
在我看来,Laravel 最宝贵的特性是它能够让你比任何其他框架更快地从无到有地构建出一个最小可行产品 (MVP)。由于它的流行程度,许多社区软件包可以快速集成到您的项目中。例如,假设您需要在项目中添加 OAuth。使用其他框架或语言,这通常需要大量的开发工作。而使用 Laravel,提供的 OAuth 软件包 Fortify 为您完成了大部分工作,只需很少的努力即可集成。
问题 3:您使用 Laravel 的经验
是什么吸引您专门从事 Laravel 开发,它如何塑造您作为开发人员的旅程?在 Laravel 社区中,您对哪些项目或成就感到特别自豪?
我不会说我专门从事 Laravel 开发,但它确实是我首选的框架。我使用过 Symfony、CodeIgniter v3、Zend v1,甚至是一个比所有其他框架都早的自制框架。
很多年前,我负责扩展和维护各种移动应用程序的 API,这些应用程序都捆绑在一个 WordPress XMLRPC 插件中。在一个项目中,我得到了更多自由,我提出应该给我时间来学习和构建下一个 API,使用我刚听到的一个概念:面向对象编程 (OOP)。我成功说服利益相关者,允许我花时间学习和以这种方式构建是值得的。我尝试了许多框架,但在 Jeffrey Way 的 Laracasts 的帮助下,Laravel 看起来非常自然,确实帮助我学习和采用了以前不知道的编程原则。
说到 Laracasts,我认为该项目和社区是 Laravel 最好的成果之一。我相信许多其他像我一样的开发人员都是从观看这些视频和教程开始的。如果没有 Laracasts,我肯定不会像现在这样。我也不会像现在这样在我的 IDE 中高效工作。
问题 4:Laraval 与 .env.vault
是什么吸引您使用 .env.vault 机制?您认为它会如何影响 Laravel 生态系统?它有用吗?Laravel 拥有自己的 .env 文件加密机制,您认为 .env.vault 在哪些方面不同或更有用?
我目前正在参与一个 Zend Framework v1 单体项目,我和我的团队正在努力将其现代化。这些应用程序使用 Zend 的 ini 文件进行配置,这些文件也可以通过 .env 值覆盖。我正在努力保护这些机密并使它们更便携,同时启动将应用程序从 Zend 迁移到 Laravel 的过程。在我寻找解决方案的过程中,我偶然发现了 dotenv.org 及其用于安全机密存储的 vault,它似乎符合我的需求。但是,我确实看到了一个机会来编写 我的第一个 Laravel 软件包,它只是简单地封装了 PHP Dotenv 库 以实现与框架的简单集成。
我认为 vault 机制对那些正在寻找机密存储解决方案的人很有用,而这些解决方案可能在他们的主机提供商处不可用或价格昂贵。此外,dotenv.org 上提供的远程同步功能以及对用户帐户的细粒度访问控制的潜力为 Laravel 加密机制缺少的价值提供了巨大补充。
感谢 David 的想法以及您对 dotenv-vault-laravel 的贡献,这为 Laravel 社区增添了新的活力。