PHP kiểm tra dòng lệnh

Sau khi cài đặt PHP, chúng tôi đã sẵn sàng để chạy mã PHP thông qua dòng lệnh. Bạn chỉ cần làm theo các bước để chạy chương trình PHP bằng dòng lệnh

  • Mở terminal hoặc cửa sổ dòng lệnh
  • Chuyển đến thư mục hoặc thư mục được chỉ định chứa các tệp php
  • Sau đó, chúng ta có thể chạy mã php bằng lệnh sau.
    php file_name.php

    PHP kiểm tra dòng lệnh

  • Chúng ta cũng có thể khởi động máy chủ để kiểm tra mã php bằng dòng lệnh bằng lệnh sau.
    php -S localhost:port -t your_folder/

    PHP kiểm tra dòng lệnh

Ghi chú. Trong khi sử dụng máy chủ tích hợp PHP, tên của tệp PHP bên trong thư mục gốc phải là chỉ mục. php và tất cả các tệp PHP khác có thể được siêu liên kết thông qua trang chỉ mục chính

PHP là ngôn ngữ kịch bản phía máy chủ được thiết kế dành riêng cho phát triển web. Bạn có thể học PHP từ đầu bằng cách làm theo Hướng dẫn PHP và Ví dụ về PHP này

Bất kỳ mã PHP nào chúng tôi viết thường được chạy trên máy chủ khi người dùng yêu cầu một trang web. Tuy nhiên, cũng có thể chạy tập lệnh thông qua CLI hoặc giao diện dòng lệnh. Đôi khi, cần phải viết các tập lệnh PHP có thể chấp nhận các đối số khi được thực thi bên trong dấu nhắc lệnh. Có thể có nhiều lý do để thực hiện việc này, từ dễ sử dụng đến tự động hóa các tác vụ cụ thể

Trong hướng dẫn này, bạn sẽ học cách truy cập các đối số dòng lệnh bên trong tập lệnh của mình với

<?php
50 và
<?php
51 trong PHP

Tại sao chúng ta cần chúng?

Các đối số được truyền xung quanh dưới dạng tham số truy vấn khi bạn yêu cầu một trang từ trình duyệt web của mình. Về phía máy chủ, chúng tôi truy cập các giá trị bên trong các tham số này bằng cách sử dụng superglobal

<?php
52. Thật không may, kỹ thuật này sẽ không hoạt động khi bạn đang chạy tập lệnh bên trong dấu nhắc lệnh. Điều này là do dấu nhắc lệnh mong đợi các đối số cho tập lệnh của nó ở định dạng khác

Hãy tạo một kịch bản đơn giản để hiểu rõ hơn vấn đề. Đặt đoạn mã sau vào trong một tệp có tên là đảo ngược. php

1
<?php
2
3
$original = $_GET["name"];
4
echo strrev($original);
5
6
?>

Bây giờ, hãy thử chạy lệnh sau từ thư mục chứa tệp đảo ngược. php được đặt

1
<?php
1

Điều này sẽ cung cấp cho bạn một lỗi tương tự như dòng sau

1
<?php
3

Điều này xảy ra vì hệ thống cố chạy một tệp có tên là đảo ngược. php?n=monty trong thư mục hiện tại, nhưng không có tệp nào như vậy

Bạn có thể chạy lệnh sau thành công, nhưng nó vẫn không xuất ra tên bị đảo ngược

1
<?php
5

Thay vào đó, nó sẽ hiển thị cảnh báo về khóa mảng không xác định "n". Việc sử dụng

<?php
50 và
<?php
51 giải quyết vấn đề này cho chúng tôi

Nhận đối số dòng lệnh với <?php 50

Có hai biến được xác định trước trong PHP, được gọi là

<?php
56 và
<?php
50, mà bạn có thể sử dụng để làm việc với các đối số dòng lệnh

Biến

<?php
56 chỉ đơn giản cho bạn biết số lượng đối số đã được chuyển đến tập lệnh. Hãy nhớ rằng tên của tập lệnh bạn đang chạy luôn được tính là đối số. Điều này có nghĩa là giá trị tối thiểu của
<?php
56 sẽ là 1

Biến

<?php
50 hữu ích hơn nhiều vì nó là một mảng các đối số được truyền tới tập lệnh và chứa giá trị thực của chúng. Bạn có thể lặp lại tất cả các giá trị bằng vòng lặp
<?php
61

Hãy tạo một tập lệnh để thay đổi độ sáng và độ tương phản của ảnh JPEG. Tập lệnh sẽ chấp nhận ba tham số bên cạnh tên của nó. tên của tệp, độ sáng mong muốn và độ tương phản mong muốn. Đặt đoạn mã sau vào tệp có tên im-filters. php

1
<?php
2
3
2
0
4
5
2
3
6
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
$original = $_GET["name"];
0
$original = $_GET["name"];
1
$original = $_GET["name"];
2
$original = $_GET["name"];
3
$original = $_GET["name"];
4
$original = $_GET["name"];
5
$original = $_GET["name"];
6
$original = $_GET["name"];
7
$original = $_GET["name"];
8
$original = $_GET["name"];
9
4
0
4
1
4
2
4
3
4
4
4
5
?>

Chúng tôi tạo một mảng có ba phần tử và tự động điền nó với ____2_______62. Bây giờ, chúng ta lặp lại các đối số dòng lệnh và đặt các giá trị của chúng bên trong mảng

<?php
63 của chúng ta. Chúng tôi đã bỏ qua đối số đầu tiên vì đó là tên của chính tập lệnh. Tên của tệp mới được tạo bằng cách thêm -edited vào cuối tên tệp gốc

Bây giờ, hãy chạy lệnh sau trong terminal

1
4
8

Thao tác này sẽ tạo đầu ra sau trong thiết bị đầu cuối, đồng thời tạo một tệp có tên là beach-edited. jpg

1
echo strrev($original);
0

Nhận đối số dòng lệnh với <?php 51

Có một vài thiếu sót trong phương thức mà chúng ta đã sử dụng để truy cập các đối số dòng lệnh trong ví dụ trước của mình. Chẳng hạn, chúng tôi giả định rằng các đối số sẽ được cung cấp theo thứ tự mà chúng tôi đang xử lý chúng trong tập lệnh. Tuy nhiên, điều đó có thể không phải lúc nào cũng đúng

Hàm

<?php
51 trong PHP là một cách tuyệt vời để truy cập tất cả các đối số này mà không phải lo lắng quá nhiều về thứ tự của chúng, v.v. Nó có một tham số bắt buộc và hai tham số tùy chọn

  1. <?php
    
    66. Các tùy chọn ngắn trong dòng lệnh bắt đầu bằng một dấu gạch nối. Mỗi ký tự được truyền vào chuỗi này được khớp với các tùy chọn được truyền cho tập lệnh
  2. <?php
    
    67. Tham số tùy chọn này chấp nhận một mảng. Mỗi phần tử (một chuỗi) trong mảng được khớp với các tùy chọn được chuyển đến tập lệnh bắt đầu bằng hai dấu gạch ngang
  3. <?php
    
    68. Tham số thứ ba tùy chọn được sử dụng để lưu trữ chỉ mục mà quá trình phân tích đối số đã dừng tại đó

Cả

<?php
66 và
<?php
67 đều tuân theo một quy ước cụ thể để phân tích các giá trị được chuyển đến tập lệnh. Các ký tự và chuỗi riêng lẻ không chấp nhận bất kỳ giá trị nào. Các ký tự và chuỗi theo sau bởi dấu hai chấm cho biết giá trị bắt buộc. Các ký tự và chuỗi theo sau bởi hai dấu hai chấm cho biết một giá trị tùy chọn. Dưới đây là một số ví dụ

  1. <?php
    
    71 và
    <?php
    
    72 sẽ không chấp nhận bất kỳ giá trị nào. Chúng tôi sẽ sử dụng chúng trong tập lệnh của mình để chuyển đổi hình ảnh thành thang độ xám
  2. Cả
    <?php
    
    73 và
    <?php
    
    74 đều sẽ yêu cầu một giá trị được truyền cho chúng. Chúng tôi sẽ sử dụng chúng để đảm bảo rằng người dùng cung cấp cho chúng tôi tệp hình ảnh mà chúng tôi có thể áp dụng các bộ lọc của mình
  3. <?php
    
    75 và
    <?php
    
    76 đều sẽ chấp nhận một giá trị tùy chọn. Chúng tôi sẽ sử dụng chúng để cung cấp cho người dùng tùy chọn không thay đổi độ tương phản của hình ảnh một cách không cần thiết. Điều tương tự cũng xảy ra với
    <?php
    
    77 và
    <?php
    
    78

Một điều bạn nên nhớ là mảng được trả về bởi

<?php
51 không chứa các phần tử bị thiếu trong danh sách đối số. Ngoài ra, các phần tử có trong danh sách đối số không có giá trị cụ thể được đặt thành
<?php
80

Bây giờ là lúc tạo kịch bản của chúng tôi với tất cả những điểm này trong tâm trí

1
<?php
2
3
echo strrev($original);
5
4
echo strrev($original);
7
5
echo strrev($original);
9
6
2
6
5
2
2
8
5
4
2
9
2
7
3
1
3
3
3
7
3
5
6
1
3
6
3
8
$original = $_GET["name"];
0
3
9
$original = $_GET["name"];
1
6
7
$original = $_GET["name"];
2
6
9
$original = $_GET["name"];
4
?>
1
$original = $_GET["name"];
6
2
7
$original = $_GET["name"];
7
$original = $_GET["name"];
9
?>
6
4
0
?>
8
4
2
<?php
00
4
4
<?php
02
4
5
2
7
<?php
05
<?php
06
<?php
07
<?php
08
<?php
09
<?php
10
<?php
11
<?php
12
<?php
13
<?php
14
2
7
<?php
16
<?php
17______

Chúng tôi chấp nhận bốn đối số khác nhau cho tập lệnh chỉnh sửa hình ảnh của mình và chỉ đặt tên tệp là bắt buộc. Bộ lọc thang độ xám không chấp nhận bất kỳ tham số nào, vì vậy chúng tôi đã đánh dấu nó là như vậy

Chúng tôi kiểm tra xem giá trị đã được cung cấp với tùy chọn dạng dài hay dạng ngắn cho mỗi đối số của chúng tôi. Mã bên trong khối

<?php
81 sẽ thực thi trong cả hai trường hợp. Sau đó, toán tử bậc ba cho phép chúng ta chọn dạng chính xác để nhận giá trị của mình bằng một câu lệnh. Ví dụ: giả sử người dùng đã cung cấp giá trị tương phản bằng tùy chọn dạng dài. Trong trường hợp này,
<?php
82 sẽ là
<?php
80 và
<?php
84 sẽ được đặt theo giá trị trong
<?php
85

Chuỗi

<?php
86 được sử dụng để theo dõi tất cả các bộ lọc được áp dụng cho hình ảnh để hiển thị chúng cho người dùng

Hãy thử chạy lệnh sau trong bảng điều khiển ngay bây giờ

1
<?php
28

Nó sẽ cho bạn thấy đầu ra sau

1
<?php
30

Tránh sao chép tập lệnh

Chúng ta đã thấy rằng mã khác nhau cần được sử dụng để truy cập các giá trị đối số khi tập lệnh chạy trên máy chủ web so với. khi nó chạy trong CLI. Tuy nhiên, điều này không có nghĩa là bạn sẽ yêu cầu hai bản sao của cùng một tập lệnh để chạy trong các môi trường khác nhau. Có một hàm tên là

<?php
87 sẽ cho bạn biết mã của bạn đang chạy bên trong máy chủ web hay CLI. Hằng số được xác định trước
<?php
88 phục vụ cùng một mục đích

1
<?php
2
___
3
<?php
35_______10__________
<?php
37
5
<?php
39
6
2_______41
2
6
2
7
2
8
2
9
<?php
46
3
1
3
3
?>

Suy nghĩ cuối cùng

Có rất nhiều lần chúng ta phải viết mã sẽ hoạt động trên một số đầu vào được cung cấp để cung cấp cho chúng ta đầu ra. Thông thường, đầu vào được xử lý bởi

<?php
52 và
<?php
90 khi tập lệnh đang chạy trên máy chủ. Tuy nhiên, đôi khi bạn sẽ cần chạy tập lệnh của mình thông qua CLI và điều đó yêu cầu bạn sử dụng
<?php
50 hoặc
<?php
51. Sử dụng
<?php
51 giúp bạn linh hoạt hơn khi xử lý các đối số và thực hiện một số công việc nặng nhọc liên quan đến việc phân tích cú pháp của chúng cho bạn

Hãy thử chạy tập lệnh trên trên hình ảnh của riêng bạn trong khi thay đổi thứ tự đối số. Bạn nên xem xét việc tạo các tập lệnh tùy chỉnh của riêng mình để tự động hóa các tác vụ nhàm chán bằng bộ lập lịch tác vụ

Làm cách nào để kiểm tra cú pháp PHP trên dòng lệnh?

Chúng ta có thể sử dụng –syntax-check thay cho -ln, nó dễ đọc hơn. Nó trả về “Không phát hiện thấy lỗi cú pháp nào trong

Làm cách nào để kiểm tra phiên bản PHP trong CMD?

Hiển thị hoạt động trên bài đăng này. .
Đầu tiên mở cmd của bạn
Sau đó vào thư mục thư mục php, Giả sử thư mục php của bạn nằm trong thư mục xampp trên ổ đĩa c của bạn. Lệnh của bạn sau đó sẽ là. CDC. \xampp\php
Sau đó, hãy kiểm tra phiên bản của bạn. php -v

Làm cách nào để chạy mã PHP trong dòng lệnh?

Bạn chỉ cần làm theo các bước để chạy chương trình PHP bằng dòng lệnh. .
Mở terminal hoặc cửa sổ dòng lệnh
Chuyển đến thư mục hoặc thư mục được chỉ định chứa các tệp php
Sau đó, chúng ta có thể chạy mã php bằng lệnh sau. tên_tệp php. php

Cách lấy đối số dòng lệnh trong PHP?

Bạn có thể dễ dàng phân tích các đối số dòng lệnh thành biến $_GET bằng cách sử dụng hàm parse_str() . parse_str(implode('&', array_slice($argv, 1)), $_GET);