Thiết bị xuất chuẩn trong PHP là gì?

Bây giờ bạn đã cảm thấy thoải mái với ý tưởng tích hợp PHP trực tiếp với các công cụ khác của mình, tôi muốn xem xét các luồng CLI SAPI được mở để sử dụng trong tất cả các tập lệnh CLI. Do thực tế là việc sử dụng stdin , stdout và stderr bên trong các tập lệnh shell là rất phổ biến, quá trình mở và đóng các luồng để truy cập chúng hiện đã được tự động hóa thông qua việc sử dụng các hằng số STDIN, STDOUT và STDERR tương ứng

Các hằng số này, khi được kết hợp với các chức năng I/O cơ bản như fgets[] và fputs[], cho phép bạn dễ dàng đọc và ghi vào bảng điều khiển. fputs[] ghi vào một luồng nhất định và nhận hai tham số. luồng cần ghi và chuỗi cần ghi. Nó cũng nhận một tham số thứ ba tùy chọn là độ dài của chuỗi cần viết, nhưng có thể bỏ qua tham số này nếu bạn muốn viết toàn bộ chuỗi. Nó ngược lại, fgets[], đọc dữ liệu từ một luồng và nhận một tham số. luồng nó sẽ đọc dữ liệu từ. Nó cũng có một tham số độ dài tùy chọn, để chỉ định lượng dữ liệu sẽ được đọc. Nếu bạn không chỉ định tham số này, độ dài sẽ mặc định là 1024 byte. Giá trị trả về của fgets[] là chuỗi được đọc từ luồng

Khái niệm về luồng, tương đối mới trong PHP, là một cách tiếp cận thống nhất để xử lý tệp, đường ống, ổ cắm và các tài nguyên I/O khác. Điều này có ý nghĩa gì đối với chúng tôi với tư cách là nhà phát triển là fputs[] và fgets[] có thể đọc và ghi vào tệp, kết nối HTTP hoặc bảng điều khiển - tất cả đều sử dụng cùng một lệnh. Đây là một tập lệnh ví dụ để chứng minh fputs[] và fgets[] được sử dụng để làm việc với bảng điều khiển

#!/usr/local/bin/php

Như bạn có thể thấy, tập lệnh sử dụng rộng rãi các fput để xuất dữ liệu sang STDOUT. Điều này có vẻ giống như một cách viết phức tạp hơn bằng cách sử dụng print[], nhưng nó linh hoạt hơn nhiều vì người ta có thể sử dụng STDERR thay cho STDOUT và chuyển hướng đầu ra lỗi đến một vị trí cụ thể

Phần duy nhất của tập lệnh có thể khiến bạn bối rối lúc đầu là lệnh gọi fgets[]. Trong ví dụ này, chúng tôi đọc từ STDIN để cho phép người dùng nhập tối đa 256 byte văn bản. Đầu vào này sau đó được chuyển qua trim[] và sau đó là strtolower[] trước khi nó được đặt vào biến $sometext. Hàm trim[] được sử dụng ở đây vì nếu người dùng không muốn nhập toàn bộ 256 byte thông tin, họ có thể chấm dứt đầu vào của mình bằng cách nhấn Return. Nếu đầu vào của họ không được gửi qua trim[] trước, thì chuỗi của họ được lưu trữ trong $sometext với phần bổ sung \n [dòng mới] còn nguyên vẹn

Dòng cuối cùng của tập lệnh xuất chuỗi người dùng của chúng tôi trở lại màn hình để hoàn thành vòng kết nối. Đọc và ghi dữ liệu bên trong bảng điều khiển khá đơn giản, như ví dụ trên cho thấy. Lưu tập lệnh dưới dạng cli3. php và thử tự mình chỉnh sửa một chút để hiểu rõ cách thức hoạt động của nó - hãy nhớ thử chuyển hướng các phần khác nhau của đầu ra, vì đây là một trong những cách tốt nhất để tận dụng các hằng số STD*

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Nếu bạn muốn mở đầu ra tiêu chuẩn dưới dạng tệp tự xử lý, bạn có thể sử dụng hàm fopen["php. // hàm stdout"]. Nó tạo một xử lý tệp đặc biệt liên kết với đầu ra tiêu chuẩn và trả về xử lý tệp. Khi đầu ra tiêu chuẩn được mở thành một tệp xử lý, bạn có thể sử dụng fwrite[] để ghi dữ liệu vào đầu ra tiêu chuẩn giống như một tệp thông thường. Đây là một ví dụ về tập lệnh PHP về cách ghi vào đầu ra tiêu chuẩn

Kịch bản này sẽ in

What's your name?
To do:
Looking for PHP hosting provider!

Nếu bạn không muốn tự mở đầu ra tiêu chuẩn dưới dạng một tệp xử lý, bạn có thể sử dụng hằng số STDOUT được xác định trước bởi PHP làm tệp xử lý cho đầu ra tiêu chuẩn

Nếu bạn đang sử dụng tập lệnh của mình trong trang Web, đầu ra tiêu chuẩn sẽ được hợp nhất vào tài liệu HTML của trang Web

Khi chạy từ CLI, các hằng số STDIN, STDOUT và STDERR được xác định trước. Các hằng số này là các xử lý tệp và có thể được coi là tương đương với kết quả chạy các lệnh sau

STDIN = fopen["php://stdin", "r"];
STDOUT = fopen["php://stdout", "w"];
STDERR = fopen["php://stderr", "w"];

Các hằng số có thể được sử dụng ở bất kỳ đâu mà một tệp xử lý tiêu chuẩn sẽ được

#!/usr/bin/php

while [$line = fgets[STDIN]] {
    $line = strtolower[trim[$line]];
    switch [$line] {
        case "bad":
            fprintf[STDERR, "%s is bad" . PHP_EOL, $line];
            break;
        case "quit":
            exit;
        default:
            fprintf[STDOUT, "%s is good" . PHP_EOL, $line];
            break;
    }
}

Các địa chỉ luồng dựng sẵn được tham chiếu trước đó [_______6, php://stdoutphp://stderr] có thể được sử dụng thay cho tên tệp trong hầu hết các ngữ cảnh

file_put_contents['php://stdout', 'This is stdout content'];
file_put_contents['php://stderr', 'This is stderr content'];

// Open handle and write multiple times.
$stdout = fopen['php://stdout', 'w'];

fwrite[$stdout, 'Hello world from stdout' . PHP_EOL];
fwrite[$stdout, 'Hello again'];

fclose[$stdout];

Thay vào đó, bạn cũng có thể sử dụng readline[] cho đầu vào và bạn cũng có thể sử dụng echo hoặc print hoặc bất kỳ chức năng in chuỗi nào khác cho đầu ra

stdin và stdout trong php là gì?

Luồng tiêu chuẩn . //stdin, php. // thiết bị xuất chuẩn và php. //stderr cho phép truy cập trực tiếp vào thiết bị luồng đầu vào tiêu chuẩn, luồng đầu ra tiêu chuẩn và luồng lỗi tương ứng với quy trình PHP . Các hằng số được xác định trước STDIN, STDOUT và STDERR tương ứng đại diện cho các luồng này.

Đầu ra php là gì?

PHP cho phép hai phương pháp gửi đầu ra tới màn hình. Một cái được gọi là bản in, cái còn lại là tiếng vang . Mặc dù chúng cung cấp cùng một chức năng, nhưng echo là một cấu trúc [nó sẽ được coi là một lệnh], trong đó print là một biểu thức [nó sẽ được đánh giá và sẽ trả về một giá trị].

Làm cách nào để nhập và xuất trong php?

php. //stdin, php. // thiết bị xuất chuẩn và php. //stderr cho phép truy cập vào luồng đầu vào hoặc đầu ra tương ứng của quy trình PHP . php. //đầu ra cho phép bạn ghi vào cơ chế bộ đệm đầu ra theo cách tương tự như print[] và echo[]. php. // đầu vào cho phép bạn đọc dữ liệu POST thô.

Đầu ra tiêu chuẩn là gì?

Đầu ra tiêu chuẩn, đôi khi được viết tắt là thiết bị xuất chuẩn, đề cập đến các luồng dữ liệu được tiêu chuẩn hóa do các chương trình dòng lệnh tạo ra [i. e. , các chương trình ở chế độ toàn văn bản] trong Linux và các hệ điều hành tương tự Unix khác .

Chủ Đề