当前位置: 首页 > 后端技术 > PHP

PHPComposer初学者指南

时间:2023-03-30 00:57:22 PHP

自2012年3月1日发布以来,Composer因提供PHP迫切需要的东西而广受欢迎:依赖管理。事实上,Composer是一种将所有第三方软件(如CSS框架、jQuery插件等)带入您的项目的方式。我敢肯定,有很多编码人员想知道使用composer的好处,也有很多人害怕尝试新工具。在本文中,我们将了解Composer是什么、它有什么作用,以及为什么它是一个很棒的PHP开发工具。首先,我们将深入了解依赖管理,然后安装Composer。我们将看一下它的基本用法,然后学习一些基础知识。现在让我们开始吧!什么是依赖管理?依赖管理其实是一个很简单的概念。假设你现在需要创建一个单页网站,你的JavaScript和CSS需要使用Foundation框架。如何将Foundation框架添加到您的项目中?通常的方法是访问网站,下载包并将其放在项目的某个位置。到目前为止,一切都很好。现在,当您想更新到最新版本时,您会怎么做?你重复同样的事情,覆盖旧版本。假设这种情况持续了一段时间,您发现有什么东西坏了。他们改变了Foundation中的一些东西,现在你必须回滚,但是在哪里?您需要找到旧版本并开始应用它们,直到找到合适的版本。即使您能弄清楚这一切,假设您现在开始从事其他人的项目,他们是否正在使用Foundation?如果是这样,它安装在哪里,它是什么版本?对于一个小项目来说,这些可能看起来没什么大不了的,但想象一下一个有8-10个依赖项的项目(这仍然不是很多)。模块化管理将变得不可能,或者至少是在浪费时间。依赖管理通过自动化和标准化来解决这些问题。可以通过编程方式检索Foundation、jQuery、Twig、Symphony、日志模块等依赖项。也可以指定版本以防止冲突。依赖管理器标准化包的存储方式和使用位置。实际上,这意味着每个使用相同依赖管理器的项目都将遵循相同的结构——至少对于那些依赖而言。安装ComposerComposer有适用于每个系统的版本。在Windows上,您可以通过此页面上的Composer安装文件安装它。在基于Linux的系统(包括OSX)上,您可以使用以下命令在本地安装:curl-sShttps://getcomposer.org/installer|php在你的项目目录下运行上面的命令,你会得到一个composer.phar文件,这个文件可以用来运行Composer。我更喜欢全局安装,这样我就可以从任何目录运行Composer命令。全局安装需要运行以下命令::mvcomposer.phar/usr/local/bin/composer运行该命令可能会在两种情况下出错。一种是你没有管理员权限,那么你可以在命令前加上sudo,然后运行。sudomvcomposer.phar/usr/local/bin/composer另一种是在Yosemite上运行,因为没有usr目录,这个命令会报错,新建对应目录再运行即可。Composer简介Composer的依赖管理由两个独立的元素组成。第一个是Composer本身,它是一个用于获取和管理依赖项的命令行工具。第二个是Packageginst——主要的Composer存储库,它是存储您可能想要使用的包的地方。使用Composer时,依赖管理的核心是一个名为composer.json的JSON文件。具体内容如下:mymail.com"}],"require":{"monolog/monolog":"1.12.0"}}你的项目要引入的依赖会在require项中列出。在上面的场景中,我引入了Monolog,这是一个流行的日志记录框架。但仅仅因为我有一个包含此信息的JSON文件并不意味着我可以开始使用Monolog。这时候就需要使用命令行了。使用命令行切换到项目文件夹,输入composerinstall命令。这会将我所有的依赖项都引入到项目中,并做一些其他的事情来保持代码干净。它创建一个供应商目录,其中包含所有依赖项,包括Composer。屏幕截图中还显示了Monolog和PSR,它们是Monolog除了composer.lock文件之外的依赖项。此时,您已准备好开始使用依赖项,但我们还可以做很多事情来提高效率。让我们进一步了解Composer。指定版本在上面的代码中,我们指定了版本1.12.0,但在某些情况下我们可能希望获得更大的版本范围。有六种方法可以指定您想要的版本,让我们来看看它们:版本范围使用比较运算符,您可以获得高于1.3和低于1.8的版本,或者使用AND和OR逻辑来获得更复杂的版本集。使用的运算符可以是>、<、>=、<=和!=。AND逻辑用空格或逗号表示,OR逻辑用双竖线表示:||。指定>2.7表示任何高于2.7的版本。>2.7<=3.5表示高于2.7和低于3.5的任何版本,包括在内。通配符版本通过使用通配符,您可以指定版本模式。例如2.3.*,表示2.3.0及以上和2.4.0以下(不包括2.4.0)的所有版本。相当于>=2.3.0<2.4。带连字符的范围使用连字符可以更轻松地指定版本范围,但它可能会因其对版本的特殊处理而造成混淆。完整版本由三个数字组成,在这种情况下,连字符范围非常有意义。2.0.0-3.0.0连字符范围表示所有高于2.0.0和低于3.0.0(包括2.0.0和3.0.0)的版本都将被接受,相当于>=2.0.0<=3.0。0。但如果只指定了部分版本号,如2.0-3.0,则表示任何高于2.0(包括2.0)但低于3.1的版本。这种看似奇怪的行为是由于连字符包含在左侧而通配符完成在右侧。上面的表达式等同于>=2.1??.1.0波浪号范围~运算符很好地标记了您所依赖的最小次要版本,并允许高于该版本的任何内容,但不包括下一个主要版本。如果指定~3.6,则将允许3.6及更高版本,但不允许4.0。~运算符最好用一个例子来解释:~3.6相当于>=3.6<4.0.0,~3.6.3相当于>=3.6.3??.7.0。如您所见,它对于尊重语义版本控制的项目非常有用。因为理论上在4.0之前应该没有向后兼容性中断,所以它会工作得很好。阅读它的另一种方法是使用~指定最低版本,但允许指定的最后一个数字增长。注意:虽然4.0-beta.1早于4.0,但版本限制如~3.6不会安装它。上面说了~3.6只是表示.6可以改变,但是3.部分是固定的。注意:~运算符的主要版本号的行为有一个例外。这意味着~1与~1.0相同,因为它不允许主编号增加以保持向后兼容性。caret插入符范围用于允许所有非中断更新。如果项目遵循语义版本控制,则对次要版本的更新不应破坏主要版本的兼容性。也就是说,除下一个主要版本外,您指定的版本以上的任何内容都不会破??坏兼容性。它与~非常相似,但更接近于语义版本控制。通过指定^3.3.5,允许3.3.5及更高版本,但排除4.0及更高版本。注意:主版本号为零(0.y.z)的软件处于开发的初始阶段,一切都可能随时发生变化,这样的版本被认为是不稳定的。为了保证兼容性,^不会更新到下一个小版本,比如^0.3.0等于>=0.3.0<0.4.0而不是>=0.3.0<1.0.0。Dev-Master通过指定dev-master,你会得到当前正在开发的最新版本,还没有打上版本号的标签。这在开发期间可能没问题,但您需要注意,在这些版本中出现错误的可能性更高。锁定-依赖锁定是Composer最有用的功能之一。前面提到了composer.lock这个文件,这个文件的作用就是锁定所使用组件的版本。锁定文件可确保每个人都使用同一版本的文件。仅仅因为应用程序不应因组件更新而中断并不意味着团队和生产服务器的所有成员都应该运行不同的版本。当您第一次使用Composer获取依赖项时,它会将确切的版本写入锁定文件。如果指定版本2.3.*,并且2.3.5是当时的最新版本,则安装版本2.3.5并记录在锁定文件中。假设开发人员在10天后加入团队。此时版本已经更新到2.3.6。如果他使用正确的命令(composerinstall),他将安装锁定文件中记录的版本2.3.5。当然,您仍然可以更新依赖项。在这种情况下,您应该运行composerupdate命令。这将获取允许的最新版本并将其写入锁定文件。然后分发给其他人,让他们更新版本。DevelopmentDependenciesComposer允许您指定开发依赖项。这是通过在require-dev数组而不是require数组中指定依赖项来完成的。{"name":"danielpataki/my_project","description":"我的新项目","authors":[{"name":"DanielPataki","email":"mail@mymail.com"}],"require":{"monolog/monolog":"1.12.0"},"require-dev":{"fzaninotto/faker","dev-master"}}Faker是一个生成假数据的PHP类。这对开发很有用,但对生产不是必需的。请注意,开发依赖项始终默认安装,Composer不会神奇地知道它何时在生产服务器上运行。如果要排除开发依赖项,则需要使用--no-dev选项运行安装或更新命令。ComposerComposer在PHP开发中随处可见。几乎所有大型和知名的网站组件,如jQuery、Foundation、Bootstrap,甚至WordPress都有一个Composer包。此外,还可以通过Composer检索更小但同样有用的代码包。Monolog之类的日志包、PHP邮件管理包、字符串操作类、PHP单元和其他工具等。框架社区极大地受益于Composer统一项目需求的能力。流行的Laravel、FuelPHP、YiiFramework等框架都依赖Composer来集成和共享功能给其他项目。当然最大的好处是潜移默化的。当您需要共享或部署代码时,Composer非常有用。您不需要拖着大约20-50MB的相关但未使用的代码。您只需将它们写入composer.json并锁定文件,每个人都可以在几分钟内获得相同的页面。结论我希望我已经让您了解Composer的强大之处,但您可以用它做更多的事情。除了我们已经讨论过的内容之外,Composer还为您提供了出色的自动加载功能,您可以将脚本挂接到更新过程的任何步骤,等等。任何团队项目都应该使用Composer,但即使你是一个人工作,它仍然非常有用。它为您的项目提供了很大的灵活性和面向未来的技术——您永远不知道什么时候可能需要额外的帮助!更多学习内容,可访问【与各大厂商对比】优质PHP架构师教程目录。只要能读懂,就能保证你的薪水更上一层楼(持续更新中)。以上内容希望对大家有所帮助。很多PHPer总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道从哪里开始改进,我整理了一些这方面的资料,包括但不限于:分布式架构,高可扩展性、高性能、高并发、服务器性能调优、TP6、laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等知识点免费分享给你如果你需要高级干货。进阶PHP月薪30k>>>架构师成长之路【免费获取视频和面试资料】