Hướng dẫn what is readline php? - readline php là gì?

Rất nhiều người học PHP thường nghĩ rằng PHP luôn phải gắn chặt với phát triển ứng dụng web.

Nội dung chính

  • Chuẩn bị project
  • Chuẩn bị ứng dụng
  • Cấu trúc dữ liệu
  • Hiển thị danh sách dữ liệu
  • Thêm dữ liệu mới
  • Lưu trữ dữ liệu trong file JSON
  • Chức năng tìm kiếm
  • Chức năng tìm và xóa
  • Mã nguồn
  • Kết luận

Thực tế không phải như vậy. Mặc dù được sử dụng chính trong web, PHP là một ngôn ngữ lập trình script đa năng tương tự như Python. Bạn có thể sử dụng PHP để viết chương trình chạy trên hệ điều hành giống như với các ngôn ngữ lập trình khác.

Cách thức đơn giản và phổ biến nhất là sử dụng PHP CLI để chạy các script dưới dạng ứng dụng console (đa nền tảng).

Chúng ta đã sử dụng cách thức này để dạy/học ngôn lập trình PHP cơ bản. Cách học này giúp tránh những phức tạp của ứng dụng web để tập trung vào cú pháp của chính ngôn ngữ trong giai đoạn đầu.

Trong bài học này chúng ta sẽ tổng hợp tất cả các kiến thức cơ bản đã học để xây dựng một ứng dụng quản lý sách điện tử ở dạng console đơn giản.

Đây sẽ là bài học cuối vận dụng PHP CLI trước khi chuyển sang ứng dụng web.

Chuẩn bị project

Chuẩn bị ứng dụng

Cấu trúc dữ liệu

Hiển thị danh sách dữ liệuẤn nút New Project để tạo một dự án mới

Hướng dẫn what is readline php? - readline php là gì?

Thêm dữ liệu mớiChọn mục PHP Empty Project trong danh sách bên trái. Mục Location chỉ định đường dẫn đến nơi sẽ chứa các file của dự án.

Lưu trữ dữ liệu trong file JSONTrong thư mục CLI tạo 4 file php mới:

  • Chức năng tìm kiếm
  • Chức năng tìm và xóa
  • Mã nguồn
  • Kết luận

Thực tế không phải như vậy. Mặc dù được sử dụng chính trong web, PHP là một ngôn ngữ lập trình script đa năng tương tự như Python. Bạn có thể sử dụng PHP để viết chương trình chạy trên hệ điều hành giống như với các ngôn ngữ lập trình khác.

Chuẩn bị ứng dụng

Cấu trúc dữ liệu Cấu hình ứng dụng

Hiển thị danh sách dữ liệu

Thêm dữ liệu mới Chỉ định tải các script ở đầu file BookMan.php như sau:

Lưu trữ dữ liệu trong file JSON Xây dựng hàm hỗ trợ main_error và main_help cho BookMan.php

Chức năng tìm kiếm

/**
 * Báo lỗi
 * @param string $cmd lệnh lỗi
 */
function main_error(string $cmd) {
    echo RED . "Command '$cmd' not found! Type 'help' for supported commands." . RESET . RN;
}
/**
 * Hiển thị trợ giúp
 */
function main_help() {
    echo BLUE . 'BOOK MANAGER V1.0 By TuHocICT.com' . RESET . RN;
    echo <<

Chức năng tìm và xóa Tạo mảng chứa thông tin ánh xạ chuỗi => hàm

Mã nguồnactions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm.

// mảng actions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm
$actions = [
    'help' => function() { main_help();},
    'quit' => function() { exit();},
];

Kết luận

Thực tế không phải như vậy. Mặc dù được sử dụng chính trong web, PHP là một ngôn ngữ lập trình script đa năng tương tự như Python. Bạn có thể sử dụng PHP để viết chương trình chạy trên hệ điều hành giống như với các ngôn ngữ lập trình khác.

Cách thức đơn giản và phổ biến nhất là sử dụng PHP CLI để chạy các script dưới dạng ứng dụng console (đa nền tảng). Xây dựng hàm entry point cho ứng dụng

Chúng ta đã sử dụng cách thức này để dạy/học ngôn lập trình PHP cơ bản. Cách học này giúp tránh những phức tạp của ứng dụng web để tập trung vào cú pháp của chính ngôn ngữ trong giai đoạn đầu.

/**
 * Entry point
 */
function main() {
    global $actions;
    while (true) {
        echo BLUE . "Command > " . RESET;
        $cmd = strtolower(readline());
        if(array_key_exists($cmd, $actions))
            $actions[$cmd]();
        else
            main_error($cmd);
    }
}
main();

Trong bài học này chúng ta sẽ tổng hợp tất cả các kiến thức cơ bản đã học để xây dựng một ứng dụng quản lý sách điện tử ở dạng console đơn giản. Chạy thử ứng dụng

Đây sẽ là bài học cuối vận dụng PHP CLI trước khi chuyển sang ứng dụng web.

Để thực hiện bài học này chúng ta sẽ sử dụng IDE PhpStorm (bản 2020.2). Theme sử dụng là Visual Studio Dark (Rider UI Them Pack plugin). Nếu bạn chưa cài đặt PHP và PhpStorm, hãy đọc lại bài học về cấu hình PHP CLI và IDE.

Tạo một project mới theo các bước sau:

Bước 1. Ấn nút New Project để tạo một dự án mới

Cấu trúc dữ liệu

Bước 2. Chọn mục PHP Empty Project trong danh sách bên trái. Mục Location chỉ định đường dẫn đến nơi sẽ chứa các file của dự án.

 'PHP programming for dummy',
        'authors' => 'Trump D.',
        'publisher' => 'The White house',
        'year' => 2017
    ],
    [
        'title' => 'PHP programming for expert',
        'authors' => 'Obama B.',
        'publisher' => 'The White house',
        'year' => 2013
    ],
    [
        'title' => 'PHP programming for professional',
        'authors' => 'Bush G.',
        'publisher' => 'The White house',
        'year' => 2009
    ],
    [
        'title' => 'PHP programming for beginner',
        'authors' => 'Clinton B.',
        'publisher' => 'The White house',
        'year' => 2005
    ],
);

Bước 3. Trong thư mục CLI tạo 4 file php mới:

BookMan.php – file script chính của chương trình.books. Như bạn đã biết, mảng trong PHP là một cấu trúc dữ liệu mạnh và đa năng. Chúng ta hoàn toàn có thể sử dụng mảng để biểu diễn những cấu trúc dữ liệu quan hệ phức tạp.

Config.php – file chứa một số thông tin cấu hình.

Console.php – file chứa các lệnh để xuất nhập dữ liệu với giao diện console.

DataService.php – file chứa các lệnh làm việc với dữ liệu.

  • Tất cả các file script tạm thời để trống. Chúng ta sẽ lần lượt viết code cho chúng trong các phần tiếp theo của bài học.
  • Bước 1. Cấu hình ứng dụng
  • Để tiện lợi khi viết code về sau, chúng ta trước hết định nghĩa một số hằng trong file Config.php như sau:

Bước 2. Chỉ định tải các script ở đầu file BookMan.php như sau:

Hiển thị danh sách dữ liệu

Bước 3. Xây dựng hàm hỗ trợ main_error và main_help cho BookMan.php Thêm phương thức book_info vào DataService.php:

/**
 * Thông tin sách
 * @param array $b
 * @return string
 */
function book_info(array $b) {
    $title = $b['title'];
    $authors = $b['authors'];
    $publisher = $b['publisher'];
    $year = $b['year'];
    return "$title [$authors] -$publisher, $year";
}

Chúng ta xây dựng hàm hỗ trợ thông báo lỗi main_error và hàm trợ giúp main_help trong BookMain.php như sau:

Bước 2. Viết code cho file Console.php như sau: Viết code cho file Console.php như sau:

 $b) {
        print "[$key] " . ds\book_info($b) . RN;
    }
}

Phương thức này duyệt qua mảng $books và lần lượt in ra từng phần tử. Lưu ý cách chúng ta sử dụng biệt danh (alias) của namespace DataService:

/**
 * Báo lỗi
 * @param string $cmd lệnh lỗi
 */
function main_error(string $cmd) {
    echo RED . "Command '$cmd' not found! Type 'help' for supported commands." . RESET . RN;
}
/**
 * Hiển thị trợ giúp
 */
function main_help() {
    echo BLUE . 'BOOK MANAGER V1.0 By TuHocICT.com' . RESET . RN;
    echo <<9. Từ giờ về sau bạn có thể gọi các hàm trong DataService qua lối viết ds\tên_hàm(), ví dụ như 
// mảng actions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm
$actions = [
    'help' => function() { main_help();},
    'quit' => function() { exit();},
];
0 ở trên.

Bước 3. Cập nhật biến $actions và hàm main_help() trong BookMan.php: Cập nhật biến $actions và hàm main_help() trong BookMan.php:

function main_help() {
    echo BLUE . 'BOOK MANAGER V1.0 By TuHocICT.com' . RESET . RN;
    echo << function() { main_help();},
    'quit' => function() { exit();},
    'list' => function () { Console\ui_list(); },
];

Ở bước này chúng ta bổ sung một phần tử mới cho $actions và một dòng thông báo mới cho main_help().

Bước 4. Chạy thử với lệnh list Chạy thử với lệnh list

Thêm dữ liệu mới

Tiếp theo đây chúng ta sẽ xây dựng chức năng thêm dữ liệu.

Bước 1. Thêm hai hàm sau vào file DataService.php:Thêm hai hàm sau vào file DataService.php:

/**
 * Thêm sách vào kho
 * @param $b
 */
function book_add($b) {
    global $books;
    array_push($books, $b);
}
/**
 * Tạo dữ liệu sách mới
 * @param string $title
 * @param string $authors
 * @param string $publisher
 * @param int $year
 * @return array
 */
function book_create(string $title, string $authors, string $publisher, int $year) {
    return [
        'title' => $title,
        'authors' => $authors,
        'publisher' => $publisher,
        'year' => $year
    ];
}

Bước 2. Thêm hàm sau vào Console.php: Thêm hàm sau vào Console.php:

0

Bước 3. Cập nhật main_help() và $actions: Cập nhật main_help() và $actions:

1

* Từ giờ về sau chúng ta sẽ chỉ trình bày cập nhật cho mảng $actions. Hàm mail_help() bạn có thể tùy ý điều chỉnh.

Bước 4. Chạy thử với lệnh new: Chạy thử với lệnh new:

Lưu trữ dữ liệu trong file JSON

JSON là định dạng dữ liệu văn bản phổ biến hàng đầu trong ứng dụng web. Dữ liệu dạng JSON có thể dùng để lưu trữ (trong file) và trao đổi (giữa web client và server).

Trong ví dụ này chúng ta sẽ sử dụng định dạng JSON cho việc lưu trữ dữ liệu của ứng dụng.

PHP hỗ trợ làm việc với JSON qua hai hàm

// mảng actions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm
$actions = [
    'help' => function() { main_help();},
    'quit' => function() { exit();},
];
1() – chuyển object thành chuỗi json, và
// mảng actions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm
$actions = [
    'help' => function() { main_help();},
    'quit' => function() { exit();},
];
2() – chuyển chuỗi json thành object.

Để nhanh chóng lưu dữ liệu vào file có thể sử dụng hàm

// mảng actions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm
$actions = [
    'help' => function() { main_help();},
    'quit' => function() { exit();},
];
3(). Để đọc dữ liệu từ file có thể dùng hàm
// mảng actions chứa thông tin để ánh xạ chuỗi lệnh người dùng nhập sang một hàm
$actions = [
    'help' => function() { main_help();},
    'quit' => function() { exit();},
];
4().

Giờ hãy cùng thực thi chức năng lưu và tải dữ liệu.

Bước 1. Thêm hai hàm sau vào DataService.php: Thêm hai hàm sau vào DataService.php:

2

Bước 2. Thêm hai hàm sau vào Console.php:Thêm hai hàm sau vào Console.php:

3

Bước 3. Cập nhật $actions: Cập nhật $actions:

4

Bạn tự cập nhật main_help() theo ý muốn.

Bước 4. Chạy thử ứng dụng với hai lệnh mới load và save.Chạy thử ứng dụng với hai lệnh mới load và save.

Chức năng tìm kiếm

Bước 1. Thêm hàm book_search() vào DataService.php: Thêm hàm book_search() vào DataService.php:

5

Bước 2. Thêm hàm ui_search() vào Console.php Thêm hàm ui_search() vào Console.php

6

Bước 3. Cập nhật $actions: Cập nhật $actions:

Bạn tự cập nhật main_help() theo ý muốn.

Bước 4. Chạy thử ứng dụng với hai lệnh mới load và save.Chạy thử chương trình với lệnh search:

Chức năng tìm kiếm

Bước 1. Thêm hàm book_search() vào DataService.php: Thêm hàm book_delete vào DataService.php

8

Bước 2. Thêm hàm ui_search() vào Console.php Thêm hàm ui_del() vào Console.php:

9

Bước 3. Cập nhật $actions: Cập nhật $actions:

/**
 * Báo lỗi
 * @param string $cmd lệnh lỗi
 */
function main_error(string $cmd) {
    echo RED . "Command '$cmd' not found! Type 'help' for supported commands." . RESET . RN;
}
/**
 * Hiển thị trợ giúp
 */
function main_help() {
    echo BLUE . 'BOOK MANAGER V1.0 By TuHocICT.com' . RESET . RN;
    echo <<0

Bạn tự cập nhật main_help() theo ý muốn. Chạy thử với lệnh del:

Bước 4. Chạy thử ứng dụng với hai lệnh mới load và save.

Chức năng tìm kiếm

Bước 1. Thêm hàm book_search() vào DataService.php:

Bước 2. Thêm hàm ui_search() vào Console.php

7 

Bước 4. Chạy thử chương trình với lệnh search:

Chức năng tìm và xóa

Bước 1. Thêm hàm book_delete vào DataService.phpgiúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.
+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.
+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.
Cảm ơn bạn!