网站开发如何使用 PHP或 getopt获取命令行参数

在我们进行网站开发时,当用户请求网页时,我们编写的任何 PHP 代码通常都在服务器上运行。但是,也可以通过 CLI 或命令行界面运行脚本。有时需要编写在命令提示符中执行时可以接受参数的 PHP 脚本。这样做的原因有很多,从易用性到特定任务的自动化。


网站开发

当您从 Web 浏览器请求页面时,参数作为查询参数传递。在服务器端,我们使用 superglobal 访问这些参数中的值$_GET。不幸的是,当您在命令提示符中运行脚本时,此技术将不起作用。这是因为命令提示符需要不同格式的脚本参数。

PHP 中有两个预定义变量被调用$argc,$argv它们可用于处理命令行参数。该变量$argc只是告诉您传递给脚本的参数数量。请记住,您正在运行的脚本的名称始终被视为参数。这意味着 的最小值$argc将为 1。该变量$argv更有帮助,因为它是传递给脚本的参数数组并包含它们的实际值。您可以使用循环遍历所有值foreach。

我们在前面的示例中用于访问命令行参数的方法存在一些缺点。例如,我们假设参数将按照我们在脚本中处理它们的顺序提供。然而,情况可能并非总是如此。

getopt()PHP 中的函数是访问所有这些参数的好方法,而无需过多担心它们的顺序等。它有一个必需参数和两个可选参数。

1、short_options:命令行中的短选项以单个连字符开头。传入此字符串的每个字符都与传递给脚本的选项相匹配。
2、long_options:这个可选参数接受一个数组。数组中的每个元素(一个字符串)都与传递给脚本的选项相匹配,这些选项以两个连字符开头。
3、rest_index:可选的第三个参数用于存储参数解析停止的索引。
无论是short_options和long_options遵循特定的约定来传递给脚本解析值。单个字符和字符串不接受任何值。后跟冒号的字符和字符串表示所需的值。后跟两个冒号的字符和字符串表示可选值。这里有些例子:

1、-g并且--grayscale两者都不会接受任何值。我们将在脚本中使用它们将图像转换为灰度。
2、-f:并且--filename:两者都需要传递给它们的值。我们将使用它们来确保用户向我们提供可以应用过滤器的图像文件。
3、-c::并且--contrast::两者都将接受一个可选值。我们将使用它们为用户提供不不必要地更改图像对比度的选项。这同样适用于-b::和--brightness::。
您应该记住的一件事是,由 返回的数组getopt()不包含参数列表中缺少的元素。此外,参数列表中存在的没有指定值的元素被设置为false。

我们已经看到,当脚本在 Web 服务器上运行和在 CLI 中运行时,需要使用不同的代码来访问参数值。但是,这并不意味着您将需要同一脚本的两个副本才能在不同的环境中运行。有一个被调用的函数php_sapi_name()会告诉你你的代码是在 Web 服务器还是 CLI 中运行。

很多时候我们必须编写代码来处理提供的输入以提供一些输出。通常情况下,输入被处理$_GET和$_PUT当脚本在服务器上运行。但是,有时您需要通过 CLI 运行脚本,这需要您使用$argv或getopt()。Usinggetopt()在处理参数时为您提供了更大的灵活性,并为您完成了一些繁重的解析工作。

相关资讯

动态渲染对 SEO 的好处

  • 2017-07-20

当我们把网站建设好后都会考虑SEO优化,搜索引擎在抓取... 查看详情

企业网站设计的首页应该具备的四大要素

  • 2017-07-20

为一家商业公司设计一个网站不是一件容易的事,并且主页... 查看详情

响应式网页设计中的导航栏的6大趋势

  • 2017-07-20

创建一个出色的响应式网站的过程包含多种因素。典型的... 查看详情

网站开发如何利用好Git

  • 2017-07-20

对于在同一个网站开发项目上一起工作的人员来说,Git 无... 查看详情

专业农业网页设计欣赏

  • 2017-07-20

农业至始至终都是国家的根基,不管科技有多么发达,还是离... 查看详情

深圳高端网页制作前要准备什么

  • 2017-07-20

目前,随着互联网的发展,越来越多的企业选择搭建网站来推... 查看详情

家居品牌极简风格网站设计参考

  • 2017-07-20

极简不是简略,很多人会把这两者混淆,对极简风格网站设计... 查看详情

网站为什么要定制开发?

  • 2017-07-20

网站为什么要定制开发?伴随着互联网技术的发展趋势变的... 查看详情

网站建设SEO优化至关重要

  • 2017-07-20

网站的成功不仅仅取决与网页设计,还有一个非常要点就是... 查看详情

双十一淘宝和拼多多到底哪个更便宜?关注网站设计

  • 2017-07-20

很多电商平台都推出了双十一大促活动,每个平台的优惠活... 查看详情


联系
  • 地址:深圳市罗湖区中海慧智大厦1A座706
  • 热线:0755-8672-1169
  • 直线:137-2893-6255
  • Email: 2503595831@qq.com
  • 周一 - 周五:10:00 am - 7:30 pm
    周六 - 周日:休整
  • 服务城市: 深圳   广州   香港   成都   台湾   珠海   汕头    甘肃   中山   佛山   长沙    东莞
  • 深圳区域: 罗湖   福田   南山   盐田   宝安   龙岗   龙华   光明   大鹏   坂田   西乡   科技园