$argv trong php là gì?

TL; DR. $argv là một mảng các đối số được truyền tới tập lệnh với chỉ mục đầu tiên là tên của chính tập lệnh đó. Và $argc là số lượng đối số được truyền cho tập lệnh (ít nhất sẽ luôn là 1)


Có thể cho rằng, theo ý định chơi chữ, một trong những phần quan trọng của ứng dụng dòng lệnh là đảm bảo rằng chúng tương tác thông qua các đối số dòng lệnh. Trong PHP có 2 biến cần hiểu

  • $argc là số lượng đối số được truyền cho tập lệnh. Lưu ý rằng tên tệp của tập lệnh luôn được chuyển làm đối số cho tập lệnh, do đó, giá trị tối thiểu của $argc1
  • #!/usr/local/bin/php
    2 là một mảng các đối số được truyền cho tập lệnh. Lưu ý đối số đầu tiên 
    The number of arguments passed to the script: 1.
    The array of arguments passed to the script is:
    Array
    (
      [0] = start.php
    )
    0 luôn là tên được sử dụng để chạy tập lệnh

Đối số dòng lệnh

Vì vậy, nếu bạn lấy nội dung được cung cấp trong bài viết trước về soạn thảo kịch bản, bạn có thể viết một cái gì đó như thế này

#!/usr/local/bin/php

Và đầu ra sẽ hiển thị

The number of arguments passed to the script: 1.
The array of arguments passed to the script is:
Array
(
  [0] = start.php
)

Từ đây, đáng để thử nghiệm với các lập luận như

$ ./start.php --foo --bar script=foo

Lưu ý quan trọng về ký tự và giao diện người dùng

Một điều quan trọng cần lưu ý là đây là mẫu chuẩn cho các đối số dòng lệnh. Tôi không khuyên bạn nên cố gắng thêm các ký tự thừa vào hỗn hợp (đặc biệt là thứ gì đó như

The number of arguments passed to the script: 1.
The array of arguments passed to the script is:
Array
(
  [0] = start.php
)
1 có thể khiến tập lệnh chấm dứt thực thi)

Hơn nữa, định dạng trên giúp dễ dàng phân tích cú pháp thông tin từ dòng lệnh và xác minh thông tin đó theo cách bạn thấy phù hợp. Ngoài ra, nó cho phép bạn chuyển các đối số đó vào các hàm hoặc lớp khác có thể được trình bày trong ứng dụng web, giao diện người dùng WordPress hoặc một số loại GUI khác (chẳng hạn như GUI sử dụng điểm cuối REST)

Việc phát triển các ứng dụng được thiết kế để chạy từ thiết bị đầu cuối thay vì thông qua trình duyệt Web yêu cầu chúng tôi, với tư cách là nhà phát triển, nhìn hơi khác một chút về cách viết tập lệnh. Chẳng hạn, khi phát triển các shell script trong PHP, bạn không cần quan tâm đến những thứ như phiên (vấn đề giao thức "không trạng thái" không áp dụng cho các script phía máy khách). Tuy nhiên, các vấn đề mới phát sinh khi bạn cố gắng thiết kế các tập lệnh yêu cầu tương tác với người dùng vì chúng tôi không còn có thể dựa vào các siêu toàn cầu $_GET, $_POST và $_COOKIE cho đầu vào hoặc HTML cho đầu ra. Thay vì các phương tiện này, để tương tác với người dùng, các tập lệnh của bạn phải dựa vào các tiện ích mở rộng dành riêng cho CLI và các ứng dụng của bên thứ ba

Đối số dòng lệnh và mã trả về

Một trong những cách mới đầu tiên để chấp nhận đầu vào từ người dùng trong tập lệnh CLI là sử dụng đối số dòng lệnh. Các đối số này được chuyển đến tập lệnh của bạn khi chúng được thực thi và thường bật hoặc xác định các tùy chọn nhất định. Một ví dụ về đối số dòng lệnh là đối số -h được truyền cho tệp thực thi PHP (hiển thị danh sách tất cả các đối số có sẵn, xem phần trước). Để nhận danh sách các đối số dòng lệnh trong PHP, bạn cần phải làm quen với hai biến được xác định trước. $argc và $argv. Hai biến này (viết tắt của số lượng đối số và giá trị đối số) lưu trữ tất cả thông tin được chuyển đến tập lệnh của bạn dưới dạng đối số dòng lệnh. Như bạn có thể đã đoán, tham số $argc là một số nguyên của tổng số đối số được truyền và $argv là một mảng số nguyên chứa (các) giá trị của các đối số đó theo thứ tự chúng được truyền. Mọi tập lệnh CLI PHP được thực thi sẽ luôn có ít nhất một đối số được cung cấp cho nó. Đối số này đại diện cho tên tệp của tập lệnh hiện đang được thực thi

Mặc dù $argc là số đối số được truyền vào tập lệnh PHP, nhưng nó sẽ luôn lớn hơn dự kiến. Điều này là do bất kể tham số nào được chuyển đến tập lệnh PHP, tham số đầu tiên $argv[0] luôn là tên của tập lệnh đang được thực thi. Điều này cho phép nhà phát triển tham chiếu đến ứng dụng đang thực thi mà không có nguy cơ sai (ví dụ: nếu người dùng quyết định đổi tên tên tệp ứng dụng)

Để biết ví dụ về cách sử dụng đối số dòng lệnh trong tập lệnh CLI PHP, hãy xem

Liệt kê 17. 1. Sử dụng $argc và $argv trong CLI PHP

Một điều kỳ lạ khác với phiên bản CLI của PHP là ngắt dòng không còn được xác định bởi thẻ HTML
. Để đặt văn bản trên dòng tiếp theo, bạn sẽ phải sử dụng ký tự xuống dòng, như được hiển thị.

Như bạn có thể thấy, tập lệnh này được thiết kế để chấp nhận một đối số dòng lệnh -d. Nếu bất cứ điều gì khác ngoài tham số này được thông qua, tập lệnh sẽ tạm dừng thực thi. Ở đây, chúng tôi nhận ra một sự khác biệt nữa khi phát triển các mã trả về tập lệnh CLI

Khi bạn phát triển tập lệnh phía máy khách, đặc biệt nếu chúng là tập lệnh được thiết kế để sử dụng cùng với các chương trình khác, bạn nên sử dụng mã trả về. Khi bạn sử dụng mã trả về (còn được gọi là mã thoát) trong tập lệnh CLI thông qua câu lệnh thoát, chúng hoạt động gần giống như sử dụng câu lệnh trả về cho các hàm. Tuy nhiên, thay vì trả lại một giá trị vào tập lệnh PHP, mã thoát được cung cấp cho hệ điều hành và có thể được sử dụng để cho biết liệu tập lệnh của bạn có "thành công" hay không (hoặc để chỉ ra lỗi đã xảy ra) trong tác vụ mà nó đang hoàn thành. Như bạn có thể thấy, ví dụ trong có hai mã thoát khác nhau. -1 (cho biết lỗi) và 0 (cho biết thành công). Mặc dù bạn có thể quyết định sử dụng một mã thoát khác trong trường hợp xảy ra lỗi, nhưng thông lệ được chấp nhận là mã thoát 0 cho biết thực thi thành công. Ngoài quy tắc này, mã thoát có thể là bất kỳ giá trị nào trong khoảng từ 0 đến 255

Cố gắng sử dụng mã thoát lớn hơn 255 sẽ dẫn đến giá trị mã thoát được trả về "quấn xung quanh" về 0 (mô-đun mã thoát 256). Do đó, mã thoát trong PHP là 256 sẽ trả về 0 cho hệ điều hành

$args trong PHP là gì?

$args là viết tắt của “đối số” và các biến là các giá trị đã cho đại diện cho một thứ khác. Nó thường được sử dụng để truyền các giá trị này nhanh hơn và sạch hơn. Ví dụ: giả sử bạn có. ? .

Làm cách nào để sử dụng argv trong PHP?

Khi tập lệnh PHP được chạy từ dòng lệnh, mảng siêu toàn cục $argv chứa các đối số được truyền cho tập lệnh đó . Phần tử đầu tiên trong mảng $argv[0] luôn là tên của tập lệnh. Biến này không khả dụng nếu lệnh register_argc_argv trong php. ini bị tắt.

Làm cách nào để đọc đối số dòng lệnh trong PHP?

Câu hỏi thường gặp về dòng lệnh PHP. Làm cách nào để đọc đối số dòng lệnh trong PHP? . Bạn chỉ cần truy cập mảng argv PHP , như minh họa trong ví dụ này. #. /usr/bin/php

argv có nghĩa là gì?

ARGV là gì? . Nó đề cập đến “ vectơ đối số ,” về cơ bản là một biến chứa các đối số được truyền cho chương trình thông qua dòng lệnh.