Hướng dẫn dùng gzipinputstream readline trong PHP

Cú pháp PHP cơ bản tương tự như các ngôn ngữ C, C++, C#, Java, JavaScript. Nếu đã học một trong các ngôn ngữ này bạn có thể nhanh chóng tiếp cận với cú pháp tương ứng của PHP.

NỘI DUNG CỦA BÀI Ẩn

1. Viết và chạy script PHP

2. PHP Tag

3. Mệnh lệnh và biểu thức trong PHP

4. Khoảng trống

5. Từ khóa trong PHP

6. Quy tắc đặt định danh

7. Comment trong PHP

8. Kết luận

Viết và chạy script PHP

Sử dụng PhpStorm tạo một project mới LearnPHP. Trong Project này tạo file script đầu tiên index.php với nội dung như sau:

<?php
/* Đây là script PHP đơn giản
  đọc dữ liệu từ console
  và in ra lời chào mừng
*/
# xuất ra console/web
# chú ý mỗi lệnh phải kết thúc bằng dấu ;
echo "Hello world from PHP CLI\r\n"; // echo là một từ khóa
# đọc từ console và gán cho biến $name
# dấu = là dấu phép gán
$name = readline('Your name, please: '); // readline là một hàm
echo "Hello, $name. Welcome to heaven!"; // $name là một biến

Chạy script trên (php index.php) từ Terminal thu được kết quả như sau:

E:\OneDrive\TuHocICT\LearnPHP>php index.php
Hello world from PHP CLI
Your name, please: Donald Trump
Hello, Donald Trump. Welcome to heaven!

Đây là một script PHP đơn giản nhất minh họa cách sử dụng một số thành phần cơ bản của PHP. Cách viết script PHP ở đây tương tự như các ngôn ngữ lập trình khác.

Tạo một file script khác trong cùng thư mục đặt tên là mixed.php và viết code như sau:

Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!

Chạy script trên bạn thu được kết quả như sau:

E:\OneDrive\TuHocICT\LearnPHP>php mixed.php
Hello world! This is my first PHP script.
Hello world, PHP
Your name: Donald Trump
Hello, Donald Trump. Welcome to heaven!
Hello again, Donald Trump. This text is not in the php tags.
Hi, Donald Trump. We meet again!

Trong ví dụ 2 chúng ta gặp một cách viết script PHP khác với ví dụ 1, và rất khác biệt với các ngôn ngữ lập trình khác.

Trong ví dụ này chúng ta trộn lẫn văn bản thường và mã lệnh PHP! Đây là điểm đặc thù của PHP. Bạn không gặp tình huống này trong Python, C# hay Java.

Trong hai ví dụ trên, echo là từ khóa, /* .. */, //, # là các chú thích, readline là một hàm, $name là một biến, <?php .. ?> gọi là PHP tag.

Tiếp theo đây chúng ta sẽ trình bày chi tiết hơn về các thành phần này.

PHP Tag

Thành phần đầu tiên bạn nhìn thấy trong mỗi file script của PHP là cụm <?php. Cụm ký tự này được gọi là PHP tag.

Sở dĩ trong script PHP phải có tag này là vì PHP được thiết kế để hoạt động trên file script với nhiều ngôn ngữ khác nhau. Mã PHP có thể được viết trộn lẫn cùng bất kỳ văn bản nào. Đây là điểm đặc thù của PHP giúp nó hòa trộn với HTML khi xây dựng ứng dụng web.

PHP Tag có tác dụng báo cho chương trình dịch PHP rằng những gì đi sau nó là code PHP để chương trình dịch PHP bắt đầu làm việc dịch và thực thi code. Để báo hiệu cho chương trình dịch PHP về việc kết thúc phần code PHP, bạn đặt tag đóng ?>.

Tất cả những gì nằm ngoài khối <?php ?> sẽ bị chương trình dịch PHP bỏ qua. Thông thường ngoài khối

E:\OneDrive\TuHocICT\LearnPHP>php index.php
Hello world from PHP CLI
Your name, please: Donald Trump
Hello, Donald Trump. Welcome to heaven!
1 sẽ là văn bản tự do hoặc mã HTML.

Nếu trong file chỉ chứa code PHP (không có mã của ngôn ngữ nào khác), bạn chỉ cần đặt tag mở <?php (không cần viết tag đóng ?>).

Nếu bạn cần chuyển đổi liên tục giữa code PHP và văn bản khác, bạn có thể đặt nhiều khối

E:\OneDrive\TuHocICT\LearnPHP>php index.php
Hello world from PHP CLI
Your name, please: Donald Trump
Hello, Donald Trump. Welcome to heaven!
1 trong cùng một file script. Ví dụ, trong dòng
E:\OneDrive\TuHocICT\LearnPHP>php index.php
Hello world from PHP CLI
Your name, please: Donald Trump
Hello, Donald Trump. Welcome to heaven!
5 chỉ có
E:\OneDrive\TuHocICT\LearnPHP>php index.php
Hello world from PHP CLI
Your name, please: Donald Trump
Hello, Donald Trump. Welcome to heaven!
6 là lệnh PHP, còn
E:\OneDrive\TuHocICT\LearnPHP>php index.php
Hello world from PHP CLI
Your name, please: Donald Trump
Hello, Donald Trump. Welcome to heaven!
7 là văn bản thường.

Bạn sẽ hiểu rõ hơn về vai trò của PHP tag khi chúng ta áp dụng PHP cho web.

Có một số cách khác nhau để viết PHP tag:

  • Dạng ngắn gọn:
    E:\OneDrive\TuHocICT\LearnPHP>php index.php
    Hello world from PHP CLI
    Your name, please: Donald Trump
    Hello, Donald Trump. Welcome to heaven!
    8
  • Dạng ASP:
    E:\OneDrive\TuHocICT\LearnPHP>php index.php
    Hello world from PHP CLI
    Your name, please: Donald Trump
    Hello, Donald Trump. Welcome to heaven!
    9
  • Dạng HTML script:
    Hello world! This is my first PHP script.
    <?php
    echo "Hello world, PHP\r\n";
    $name = readline('Your name: ');
    echo "Hello, $name. Welcome to heaven!\r\n";
    ?>
    Hello again, <?php echo $name ?>. This text is not in the php tags.
    Hi, <?=$name?>. We meet again!
    0

Dạng ngắn gọn có vai trò đặc thù giúp truyền giá trị của biến/biểu thức PHP như bạn đã gặp trong ví dụ 2:

Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
1. Lối viết này tiện lợi hơn rất nhiều so với phiên bản đầy đủ tương đương
Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
2.

Dạng ASP và HTML script không thông dụng và đòi hỏi cấu hình riêng cho php.ini. Nếu sử dụng file script với PHP CLI, bạn không thể sử dụng các lối viết này.

Mệnh lệnh và biểu thức trong PHP

Tất cả những gì bạn yêu cầu PHP thực hiện trong file script được gọi chung là lệnh (command). Ví dụ,

Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
3 là lệnh xuất dữ liệu;
Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
4 là một lệnh gán giá trị; readline() là một lệnh gọi hàm nhập dữ liệu từ console.

PHP phân biệt hai loại lệnh: mệnh lệnh (statement) và biểu thức (expression):

  • Statement là những lệnh không đem lại kết quả;
  • Expression là những lệnh tính toán mang lại kết quả.

Ví dụ:

Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
3 chỉ in dữ liệu ra giao diện. Nó không mang lại một giá trị nào mà bạn có thể sử dụng trong code. Đây là một statement.

Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
6 mang lại giá trị là chuỗi ký tự người dùng nhập vào và bạn có thể sử dụng giá trị đó ở một lệnh khác. Đây là một expression.

Mỗi lệnh trong PHP phải kết thúc bởi dấu chấm phẩy (;). Bạn có thể viết nhiều lệnh trên cùng một dòng, hoặc một lệnh trên nhiều dòng.

Điều này liên quan đến khoảng trống.

Khoảng trống

Khoảng trống trong PHP bao gồm dấu cách (space), dấu tab, dấu xuống dòng. Hầu hết khoảng trống trong PHP không có ý nghĩa cú pháp, ngoại trừ dùng để phân tách các phần của lệnh.

Ví dụ, các lệnh

echo 'Hello world'; 
echo           'Hello world'; 
echo
'Hello world';
echo
          'Hello world';
     echo 'Hello world';

là như nhau, chỉ cần giữa echo và ‘Hello world’ có ít nhất 1 khoảng trống là hợp lệ. Bạn có thể để 1 hay 10 khoảng trống, dù là dấu cách, dấu tab hay dấu xuống dòng đều được.

Số lượng khoảng trống trước và sau mỗi lệnh cũng không ảnh hưởng đến lệnh.

Chương trình dịch PHP sẽ tự động bỏ qua những khoảng trống thừa.

Một số ngôn ngữ như Python hay F# sử dụng khoảng trống với vai trò cú pháp, như tạo ra code block. Với các ngôn ngữ này, khoảng trống rất quan trọng. Thừa thiếu khoảng trống có thể dẫn đến lỗi cú pháp hoặc ngữ nghĩa.

Việc sử dụng khoảng trống chỉ cần đảm bảo code viết ra dễ đọc và theo một kiểu thống nhất.

Kiểu định dạng thống nhất với khoảng trống tạo ra các coding style. Có nhiều coding style khác nhau. Thông thường, các IDE hỗ trợ định dạng code với khoảng trống theo một style nào đó.

Từ khóa trong PHP

Từ khóa (keyword) là những từ có ý nghĩa đặc biệt xác định từ trước trong ngôn ngữ lập trình. Việc sử dụng các từ khóa bắt buộc phải theo quy tắc cú pháp và chức năng đặt ra dành riêng cho từ khóa đó.

Chúng ta đã gặp từ khóa đầu tiên, echo, trong các ví dụ đã làm. Khi sử dụng từ khóa echo, bạn bắt buộc phải viết một giá trị sau nó. Từ khóa echo chuyên xuất ra văn bản ra giao diện CLI hay web. Bạn không thể sử dụng echo cho vai trò khác và theo cách khác.

Dưới đây là danh sách các từ khóa trong PHP:

Hướng dẫn dùng gzipinputstream readline trong PHP
Hướng dẫn dùng gzipinputstream readline trong PHP

Bạn không cần ghi nhớ danh sách này. Trong suốt quá trình học chúng ta sẽ dần tiếp xúc với (hầu như) toàn bộ các từ khóa này ở những nội dung tương ứng.

Điểm đặc biệt trong PHP là từ khóa không phân biệt chữ hoa/thường (trong khi định danh lại phân biệt hoa/thường). Theo đó,

Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
7 hay
Hello world! This is my first PHP script.
<?php
echo "Hello world, PHP\r\n";
$name = readline('Your name: ');
echo "Hello, $name. Welcome to heaven!\r\n";
?>
Hello again, <?php echo $name ?>. This text is not in the php tags.
Hi, <?=$name?>. We meet again!
8 cũng đều là các lệnh chính xác!

Quy tắc đặt định danh

Định danh trong PHP là những tên gọi của các thành phần khác nhau mà bạn sử dụng trong code. Ví dụ, biến, hằng, hàm, kiểu dữ liệu đều phải có tên gọi riêng.

Tên gọi trong PHP phải tuân thủ các quy tắc sau:

  • Tên gọi chỉ được phép chứa các chữ cái (A-Z, a-z), chữ số (0-9), và dấu gạch chân _;
  • Ký tự đầu tiên trong tên gọi không được phép là chữ số;
  • Tên gọi không được trùng với từ khóa.

Ví dụ:

  • readline, name, student01, person_02, _pi_, Lesson, TUTORIAL là những tên gọi hợp lệ.
  • 1_student là tên gọi không hợp lệ (bắt đầu bằng chữ số).
  • hell-heaven là tên gọi không hợp lệ (chứa ký tự -, sẽ bị hiểu thành phép trừ).
  • echo là tên gọi không hợp lệ (trùng với từ khóa echo).

Đối với mỗi loại thành phần sẽ có thêm những quy ước riêng khi đặt tên. Khi học đến thành phần nào chúng ta sẽ trình bày quy ước đặt tên riêng của nó.

Tên gọi trong PHP có thể phân biệt hoa/thường hoặc không. Đây là điểm hơi rắc rối so với các ngôn ngữ khác trong họ C.
Từ khóa không phân biệt hoa/thường.
Tên hàm không phân biệt hoa thường. ReadLine, readline hay READLINE đều chỉ cùng một hàm.
Tên biến có phân biệt hoa thường (thêm vào đó, tên biến phải bắt đầu bằng ký tự $). $name và $Name là hai biến khác nhau.

Ngoài các quy tắc đặt định danh, người ta còn sử dụng một số quy ước đặt tên cho từng loại đơn vị trong code. Các quy ước phổ biến nhất bao gồm PascalCase (dùng cho tên class), camelCase (dùng cho tên biến / property / phương thức / hàm), snake_case (hay dùng cho tên biến / hàm / phương thức).

Comment trong PHP

Comment là những thông tin phụ không được xử lý trong quá trình dịch. Khi gặp comment, chương trình dịch PHP sẽ bỏ qua. Comment không ảnh hưởng đến thực thi chương trình.

Comment có tác dụng làm rõ ý nghĩa của code, giúp người đọc code dễ hiểu ý tưởng.

PHP hỗ trợ 3 cách viết comment:

  • Comment trên một dòng theo kiểu C
    Hello world! This is my first PHP script.
    <?php
    echo "Hello world, PHP\r\n";
    $name = readline('Your name: ');
    echo "Hello, $name. Welcome to heaven!\r\n";
    ?>
    Hello again, <?php echo $name ?>. This text is not in the php tags.
    Hi, <?=$name?>. We meet again!
    9
  • Comment trên một dòng theo kiểu Python
    E:\OneDrive\TuHocICT\LearnPHP>php mixed.php
    Hello world! This is my first PHP script.
    Hello world, PHP
    Your name: Donald Trump
    Hello, Donald Trump. Welcome to heaven!
    Hello again, Donald Trump. This text is not in the php tags.
    Hi, Donald Trump. We meet again!
    0
  • Comment trên nhiều dòng theo kiểu C
    E:\OneDrive\TuHocICT\LearnPHP>php mixed.php
    Hello world! This is my first PHP script.
    Hello world, PHP
    Your name: Donald Trump
    Hello, Donald Trump. Welcome to heaven!
    Hello again, Donald Trump. This text is not in the php tags.
    Hi, Donald Trump. We meet again!
    1
<?php
/* Đây là một comment
   viết trên nhiều dòng
   theo kiểu C
*/
# Đây là một comment một dòng theo kiểu Python
# Đây là một dòng comment khác
// Đây là comment trên một dòng theo kiểu C

Mặc dù không bắt buộc sử dụng comment, bạn nên hình thành thói quen viết comment cho những đoạn code quan trọng.

Kết luận

Trong bài học này chúng ta đã làm quen với những vấn đề cơ bản nhất về cú pháp của ngôn ngữ PHP:

  • Cách sử dụng PHP tag trong file script;
  • Phân biệt statement và expression cùng các quy tắc sử dụng liên quan;
  • Từ khóa trong PHP;
  • Quy tắc đặt định danh trong PHP;
  • Cách viết chú thích trong PHP.

Nhìn chung, tất cả các quy tắc cú pháp cơ bản của PHP đều giống với các ngôn ngữ tương tự C. Nếu đã quen thuộc với một trong các ngôn ngữ này, bạn dễ dàng nắm được cách sử dụng trong PHP.