Tìm hiểu PHP CLI (P1)
Bài đăng này đã không được cập nhật trong 7 năm
Mở đầu
Nếu các bạn là người làm việc trong lĩnh vực công nghệ thông tin, dù không chuyên code php nhưng chắc hẳn các bạn đã ít nhiều biết đến hoặc có cơ hội làm việc với nó. Nó là một ngôn ngữ lập trình đã và đang khá phổ biến trên Thế Giới hiện nay. PHP giúp những nhà phát triển web chỉ trong một thời gian ngắn có thể tạo ra những ứng dụng web vô cùng tuyệt vời. Đúng như vậy, ngay từ những dòng giới thiệu trên trang php manual, chúng ta có thể dễ dàng nhìn thấy.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.
Tạm dịch:
PHP (Viết tắt hồi quy của: Hypertext Preprocessor) là một ngôn ngữ kịch bản mã nguồn mở được sử dụng rộng rãi đặc biệt phù hợp cho phát triển web và có thể nhúng vào trong các thẻ HTML.
Nó gần như có nghĩa rằng "PHP chỉ sinh ra để giành cho phát triển ứng dụng web và chỉ riêng ứng dụng web mà thôi". Vâng, việc php phù hợp với ứng dụng web là điều không cần phải bàn cãi. Nhưng liệu php còn có những ứng dụng nào khác hữu ích hay đơn giản hơn là nó có cung cấp cho chúng ta những công cụ để làm việc với những thành phần khác trong hệ thống không? Câu trả lời là "Có". Ngoài bộ công cụ giành cho việc phát triển web thì php còn cung cấp cho chúng ta rất nhiều các câu lệnh command line, cái mà giúp chúng ta có thể làm việc dễ dàng trong màn hình console (terminal). Tiêu biểu, một số php framework nổi tiếng hiện nay như Symfony hoặc Laravel thực sự đã giúp việc sử dụng command line của php đơn giản và tuyệt vời hơn bao giờ hết. Và trong bài viết này, tôi xin cùng các bạn tìm hiểu PHP CLI (PHP Command Line Interface) cũng như một số câu lệnh thông dụng.
Giới thiệu
PHP CLI (PHP Command Line Interface) cung cấp cho chúng ta những câu lệnh sử dụng trong hệ thống command line. Hay nói cách khác, đó cách chúng ta sử dụng php mà không cần dùng đến một webserver (apache2, nginx,...). Nó áp dụng tất cả những lợi thế của kịch bản shell cho phép tạo ra những câu lệnh hỗ trợ hoặc ứng dụng hệ thống.
Về cơ bản, một câu lệnh php cli có dạng như sau:
$ php [options] <required> [args...]
# options là các tùy chọn. (ví dụ: --a, -r, ...)
# required là thành phần bắt buộc. (ví dụ: /path/to/php_script.php, php string code, ...)
# args là những tham số mở rộng có thể được dùng thêm.
Để trực quan hơn, ngay lúc này, bạn hãy mở màn hình Command Prompt (Windows) hoặc Terminal (Ubuntu). Lưu ý, các bạn phải cài đặt php trước nhé. Sau đó, để chắc chắn php đã được cài đặt và kích hoạt trong hệ thống, các bạn gõ lệnh sau:
$ php -v # php --version
PHP 7.1.1 (cli) (built: Jan 18 2017 18:51:14) ( ZTS MSVC14 (Visual C++ 2015) x86 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
Như hình vẽ, các bạn có thể thấy rằng máy tính của tôi đang sử dụng php với phiên bản 7.1.1 Và để liệt kê chi tiết hơn những câu lệnh mà chúng ta có thể sử dụng, các bạn có thể sử dụng lệnh sau:
$ php -h # php --help
Usage: php.exe [options] [-f] <file> [--] [args...]
php.exe [options] -r <code> [--] [args...]
php.exe [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
php.exe [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
php.exe [options] -S <addr>:<port> [-t docroot]
php.exe [options] -- [args...]
php.exe [options] -a
-a Run as interactive shell
-c <path>|<file> Look for php.ini file in this directory
-n No configuration (ini) files will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse and execute <file>.
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-r <code> Run PHP <code> without using script tags <?..?>
-B <begin_code> Run PHP <begin_code> before processing input lines
-R <code> Run PHP <code> for every input line
-F <file> Parse and execute <file> for every input line
-E <end_code> Run PHP <end_code> after processing all input lines
-H Hide any passed arguments from external tools.
-S <addr>:<port> Run with built-in web server.
-t <docroot> Specify document root <docroot> for built-in web server.
-s Output HTML syntax highlighted source.
-v Version number
-w Output source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
args... Arguments passed to script. Use -- args when first argument
starts with - or script is read from stdin
--ini Show configuration file names
--rf <name> Show information about function <name>.
--rc <name> Show information about class <name>.
--re <name> Show information about extension <name>.
--rz <name> Show information about Zend extension <name>.
--ri <name> Show configuration for extension <name>.
Có thể thấy PHP CLI cung cấp cho chúng ta khá nhiều câu lệnh đúng không nào?
Sử dụng PHP CLI
Trong phần này, tôi sẽ đi cụ thể vào việc sử dụng một số câu lệnh mà tôi hay dùng và cảm thấy rất hữu ích.
1. Thực thi các kịch bản trong một tệp .php cụ thể.
- Cú pháp: php [--file] </path/to/php_script.php> (Bạn có thể bỏ option --file)
- Để thực hiện ví dụ này, các bạn hãy tạo ra một tệp .php với một số câu lệnh tùy ý. Ở đây, tôi sẽ tạo ra tệp do_you_love_php.php với dung sau:
<?php
echo 'Do you love php? Join with me.';
// Viết mọi câu lệnh php bạn muốn.
- Sau đó, trong màn hình console, bạn hãy gõ lệnh sau:
$ php do_you_love_php.php # Tôi đã chuyển đến thư mục chứa tệp nên chỉ cần gõ tên tệp
You you love php? Join with me.
- Như vậy, lệnh echo trong tệp do_you_love_php.php đã được thực thi và xuất ra dòng chữ như tôi viết. Đây là một trong những câu lệnh tôi rất hay sử dụng nhất. Thay vì mở trình duyệt, gọi đến kịch bản php mong muốn thông qua webserver thì tôi thường viết và thực thi ngay trên màn hình console.
2. Thực thi một đoạn kịch bản php mà không cần dùng cặp thẻ "<?php ... ?>"
- Cú pháp: php -r <"php_string_code">
- Hãy cùng tôi điểm qua một số ví dụ sau:
$ php -r "echo 'Have you every writen php code?';"
Have you every writen php code?
$ php -r "echo 'This is a hashed text: ' . md5('your string you wanna hash');"
This is a hashed code: e7f5c467261408d1aa2f8492218f98e0
$ php -r "echo 'Now is ' . date('H:i:s d/m/Y');"
Now is 13:59:36 27/08/2017
- Với cách này, tôi có thể test rất nhanh các kết quả mà mình mong muốn thay vì phải viết ra một tệp php. Nó cực kỳ hữu ích trong các trường hợp mà bạn muốn thử kết quả của một số hàm có đầu vào và đầu ra đơn giản.
3. Xem thông tin hàm, lớp, ...
- Cú pháp: php --rf <function_name> # Show information about function <name>. php --rc <class_name> # Show information about class <name>.
$ php --rf md5 # Hiện ra thông tin của một hàm.
Function [ <internal:standard> function md5 ] {
- Parameters [2] {
Parameter #0 [ <required> $str ]
Parameter #1 [ <optional> $raw_output ]
}
}
$ php --rc class # Xuất ra thông tin của một lớp.
Class [ <internal:Core> class Exception implements Throwable ] {
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [7] {
Property [ <default> protected $message ]
Property [ <default> private $string ]
Property [ <default> protected $code ]
Property [ <default> protected $file ]
Property [ <default> protected $line ]
Property [ <default> private $trace ]
Property [ <default> private $previous ]
}
- Methods [11] {
Method [ <internal:Core> final private method __clone ] {
}
Method [ <internal:Core, ctor> public method __construct ] {
- Parameters [3] {
Parameter #0 [ <optional> $message ]
Parameter #1 [ <optional> $code ]
Parameter #2 [ <optional> $previous ]
}
}
Method [ <internal:Core> public method __wakeup ] {
}
Method [ <internal:Core, prototype Throwable> final public method getMessage ] {
}
Method [ <internal:Core, prototype Throwable> final public method getCode ] {
}
Method [ <internal:Core, prototype Throwable> final public method getFile ] {
}
Method [ <internal:Core, prototype Throwable> final public method getLine ] {
}
Method [ <internal:Core, prototype Throwable> final public method getTrace ] {
}
Method [ <internal:Core, prototype Throwable> final public method getPrevious ] {
}
Method [ <internal:Core, prototype Throwable> final public method getTraceAsString ] {
}
Method [ <internal:Core, prototype Throwable> public method __toString ] {
}
}
}
- Các bạn có thể thấy, chỉ với một câu lệnh cực kỳ đơn giản, tôi đã nhanh chóng xem được một hàm hoặc một lớp của php có những thành phần gì.
4. Thực thi các đoạn lệnh tương tác.
- Cú pháp: php -a
php -a
Interactive shell
php > echo 'This is the first statement.';
This is the first statement.
php > echo 'This is the second statement.';
This is the second statement.
php > echo 'This is the third statement.';
This is the third statement.
- Thay vì thực thi từng đoạn lệnh ngắn với php -r, khi kích hoạt Interactive shell, bạn sẽ có thể liên tục thực thi những lệnh mà mình mong muốn. Nó rất phù hợp khi bạn muốn thử những kết quả cụ thể một cách liền mạch.
Kết thúc
Như vậy, tôi và các bạn đã cùng nhau tìm hiểu cũng như thực hiện một số ví dụ với PHP CLI, một thành phần khá hay hữu ích của ngôn ngữ này. Đến đây, tôi rất mong các bạn có cơ hội làm việc với php có thể tìm đến và sử dụng những câu lệnh hữu ích cho riêng mình. Và sau đó, cùng nhau chia sẻ những kiến thức bổ ích.
Chúc các bạn học tập và làm việc vui vẻ.
Tài liệu
http://php.net/manual/en/features.commandline.introduction.php http://www.php-cli.com/
All rights reserved