网站开发如何使用 PHP或 getopt获取命令行参数
- By 本站 - 2023-04-04 19:18
- Read:208
在我们进行网站开发时,当用户请求网页时,我们编写的任何 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()在处理参数时为您提供了更大的灵活性,并为您完成了一些繁重的解析工作。
转载请保留出处及原文地址:/index.php?r=article/Content/index&content_id=647