Thư viện PEAR cho PHP

PEAR là một trong những từ ngữ được nhắc đến khá phổ biến trong cộng đồng PHP. Ở một khía cạnh nhất định, việc sử dụng PEAR sẽ giúp cho các lập trình viên giải quyết nhanh công việc với chất lượng sinh mã tốt nhờ vào sự phong phú và độ chuẩn của thư viện PEAR.

PEAR là dự án do Stig S. Bakken khởi xướng vào tháng 11 năm 1999 nhằm tạo ra một công cụ tương tự như thư viện lưu trữ CPAN của Perl. Mục đích chính của nó là trở thành một kho chứa cho phần mã thư viện và mở rộng dùng cho PHP, và với tham vọng định ra các chuẩn mực có thể giúp các nhà phát triển tạo nên những dòng mã khả chuyển và có thể dùng lại.

PEAR là viết tắt của “PHP Extension and Application Repository”, nó cung cấp:

Một thư viện có cấu trúc các mã nguồn mở cho người dùng PHP

Một hệ thống phân phối và đóng gói mã nguồn

Một phong cách chuẩn viết mã trong PHP

PHP Foundation Classes (PFC)

PHP Extension Community Library (PECL)

Các thư viện nổi tiếng nhất của PEAR như PEAR:DB, PEAR:Mail… được phân phối kèm với PEAR trong các bản PHP 4.x/5.x package. Các gói thư viện khác nếu muốn dùng thì phải được tải về độc lập và cài vào PEAR trên máy chủ. Quá trình này diễn ra nhanh chóng và tiện lợi nhờ các công cụ cài đặt PEAR đi kèm với bản PHP. Ngoài ra, các nhà phát triển PEAR còn cung cấp thêm công cụ cài PEAR qua web.

PEAR được phân phối dưới giấy phép GPL (GNU General Public License), nó miễn phí và có thể tải về để sử dụng. Tuy nhiên, các thư viện được quản lý trong PEAR thì lại được phân phối theo các giấy phép khác nhau mặc dù tất cả đều là mã nguồn mở. Vì vậy hãy kiểm tra điều kiện sử dụng của mỗi một thư viện bạn muốn dùng để đảm bảo không có ràng buộc gì về vấn đề bản quyền.

Mặc dù có hàng trăm thư viện mã hay các framework đang tồn tại cạnh PEAR trong thế giới PHP, nhưng PEAR vẫn được đánh giá cao như là một sự lựa chọn an toàn và chất lượng.

Bạn cần những gì trước khi cài đặt PEAR trên Windows?

PEAR cần được cài đặt trước khi sử dụng. Trước hết, bạn cần cài đặt Apache 1.3/2.0, PHP 4.3.x (bản package), MySQL 3.x trở lên trên máy tính chạy Windows 2K/XP. (Bạn có thể tham khảo bài viết hướng dẫn cài đặt PHP, Apache và MySQL đã đăng trên TGVT A tháng 8/2004, ID: A0408_110). Lưu ý, bạn có thể thay đổi các cấu hình trong bài viết cho phù hợp với máy của bạn.

Cấu hình 1: Cài PHP4 vào thư mục c:serverphp4. Tôi dùng bản PHP 4.3.10.

Cấu hình 2: Cài Apache 2 vào c:serverapache2. Thư mục phục vụ web được chuyển về thư mục c:webroot. File php.ini được đặt vào thư mục bin của Apache 2.

Các bước tiến hành cài đặt PEAR

Bạn sẽ thấy trong thư mục cài đặt PHP có một thư mục tên PEAR. Thư mục này gồm một loạt các file nén chứa các gói thư viện phân phối sẵn theo PHP. Việc cài đặt PEAR lúc này thực ra là giải nén và cấu hình PEAR..

Bước 1: Cài PEAR vào webroot

Trong C:webroot tạo một thư mục là sharedlib hoặc một cái tên khác tùy bạn.

Vào thư mục C:serverphp4 và chép các file php4ts.dll, go-pear.bat và các thư mục PEAR, cli trong đó vào sharedlib mới tạo.

Chạy file go-pear.bat và làm theo hướng dẫn. Lưu ý, bạn có thể chỉnh sửa lại file go-pear.bat để nó sử dụng php.exe theo ý riêng của bạn. Bạn sẽ đi qua một loạt quy trình lựa chọn cấu hình, ví dụ: nơi cài đặt, đường dẫn đến file php.exe. Bạn chỉ việc chọn cấu hình thích hợp. Thực ra việc sao chép các file và thư mục của tôi ở trên vào sharedlib đã giúp giảm được sai sót trong quá trình lựa chọn. Nếu bạn ấn Enter ở bước này thì PEAR sẽ được mặc định cài vào thư mục hiện thời. Chỉ có duy nhất tùy chọn số 7 là nên lưu tâm sau khi đã cài đặt PEAR (bạn có thể thay đổi thông số này trong biến môi trường).

Quá trình cài đặt sẽ tạo ra trong thư mục sharedlib hai tệp mới là pear.bat và PEAR_ENV.reg, file chứa các thay đổi cần cập nhật vào registry của Windows.
Chạy tệp PEAR_ENV.reg vừa mới được tạo ra (chọn Yes khi xuất hiện hộp thoại yêu cầu xác nhận). Khi đó, một loạt các biến môi trường cho PEAR sẽ được bổ sung vào Windows (bạn có thể chỉnh sửa chúng sau này).

Bổ sung đường dẫn đến thư mục chứa pear.bat vào System Variable để tiện cho việc gọi lệnh PEAR ở chế độ dòng lệnh (Command Line).

Sau khi cài đặt xong, chúng ta sẽ thấy có một cấu trúc thư mục mới trong thư mục sharedlib.

Bước 2: Sửa đổi php.ini

Tìm đến thư mục chứa php.ini. Giả sử là thư mục bin của Apache 2. Tìm đến dòng

;include_path = “.;c:php=includes”
và thêm vào dưới hoặc thay thế bằng dòng lệnh sau:

include_path = “.;c:webrootsharedlibPEAR”
Khởi động lại Apache.

Bước 3: Kiểm tra

Bạn dùng một text editor hay một phần mềm viết PHP chuyên dụng như PHP Designer 2005 để tạo ra đoạn code sau:

<?php

require_once DB.php;

$user = root;

$pass = ;

$host = localhost;

$db_name = test;

// Data Source Name

$dsn = “mysql://$user:$pass@$host/$db_name”;

$db = DB::connect($dsn);

if (DB::isError($db)) {

die ($db->getMessage());

} else {

echo Connected successfully;

}

$db->disconnect();

?>

Tạm thời thì bạn có thể chỉ cần biết là với đoạn mã trên chúng ta đã dùng gói PEAR:DB, một gói được cài đặt trong quy trình trên để kết nối vào cơ sở dữ liệu MySQL với user là root, mật khẩu để trống (hoặc không trống là tùy vào cấu hình của bạn), và cơ sở dữ liệu là test. Nếu kết nối thành công thì bạn sẽ nhận được dòng thông báo “Connected successfully” còn không thì sẽ là một thông báo lỗi “DB Error: connect failed”. Như vậy là bạn đã thực hiện xong việc cài đặt PEAR.

Sau khi thực hiện xong việc cài đặt, nếu có kết nối Internet, bạn có thể thực hiện việc nâng cấp các gói thư viện trong PEAR. Việc nâng cấp này được thực hiện qua tệp pear.bat cùng được tạo ra cùng với PEAR_ENV.reg trong quá trình cài đặt PEAR. Do ở trên chúng ta đã chủ ý đưa tệp này vào đường dẫn hệ thống cho nên chúng ta có thể gọi lệnh đến tệp này mà không cần phải chỉ đường dẫn đến chúng. Quy trình thực hiện như sau:

· Vào Run, gõ cmd. Trong cửa sổ DOS, ta gõ pear (và nhấn Enter). Khi đó bạn sẽ thấy xuất hiện các câu lệnh liên quan đến PEAR.

Bạn có thể xem chú thích cho từng câu lệnh này bằng cách gõ pear help <command>. Ví dụ: pear help upgrade.

· Để nâng cấp toàn bộ các gói hiện có trong PEAR, bạn gõ pear upgrade-all. Lưu ý, câu lệnh chỉ đảm bảo cho bạn nâng cấp các gói đã cài trong bản PEAR. PEAR là một thư viện rất lớn và bản PEAR cài ở trên chỉ là một vài gói tiêu biểu được phân phối kèm với bản PHP 4.x package.

Để xác định xem các gói nào trên máy của bạn đã có bản nâng cấp thì bạn gõ lệnh:

pear list-upgrades

Để cài đặt một gói thư viện mới, bạn gõ pear install tên_gói. Ví dụ: pear install html_quickform. Xin chú ý: PEAR là một hệ thống thư viện có liên kết chặt chẽ như là một framework. Chính vì thế, bạn sẽ thường gặp trường hợp một gói này sử dụng mã thư viện của một gói khác. Để cài đặt một gói nhất định, bạn cần cài đặt gói mà nó phụ thuộc trước. Ví dụ: việc cài HTML_QuickForm phụ thuộc vào gói HTML_Common cho nên bạn cần cài HTML_Common trước.

Để biết hiện PEAR có những gói gì và trên máy của bạn đã có những gói gì, bạn dùng pear list-all. Nếu không kết nối Internet, bạn sẽ chỉ có thể dùng pear list để xem các gói đã cài trên máy.

Theo dõi thông tin cài đặt PEAR với gói PEAR_Info

Ngoài việc sử dụng công cụ dòng lệnh để theo dõi các gói cài đặt trong PEAR thì chúng ta còn có một công cụ khác tương tự như phpinfo() cho phép biết thông tin về các gói cài đặt hiện thời PEAR toàn diện hơn qua trình duyệt: PEAR_Info. PEAR_Info cho phép bạn theo dõi các thông tin về tên gói, phiên bản, chức năng của gói, tình trạng phát triển, địa chỉ phát triển cũng như các cấu hình khác cho PEAR với giao diện web như phpinfo(). Nếu có kết nối Internet, bạn có thể cài đặt gói này qua lệnh pear install PEAR_Info.

Để dùng gói này, bạn hãy tạo ra một file pear_info.php hay tên nào đó tùy bạn với nội dung như sau:

<?php

require_once PEAR/Info.php;

$info = new PEAR_Info();

$info->show();

?>

Chạy file này trên localhost, bạn sẽ thấy một trang web có giao diện như hình.

PEAR với HTML_Quickform

HTML_QuickForm là một trong các gói rất nổi tiếng của PEAR. QuickForm cung cấp một thư viện tiện ích giúp xử lý các biểu mẫu HTML bao gồm các phương thức để tạo, xác định tính hợp lệ và hiển thị các biểu mẫu HTML một cách linh hoạt. Nó có khả năng tùy biến và mở rộng theo nhiều cách. QuickForm bao gồm nhiều tệp: tệp chính là QuickForm.php có mặt trong thư mục con HTML nằm trong thư mục cài PEAR; các tệp quan trọng khác như element.php và group.php, xử lý các phương thức liên quan đến các phần tử của biểu mẫu, cả hai đều đặt trong thư mục HTML/QuickForm cùng với các đối tượng biểu mẫu khác; tệp input.php chứa một lớp chung cho tất cả phần tử của kiểu giá trị nhập (text, password…). QuickForm có các đối tượng chung cho tất cả phần tử biểu mẫu: select, text, password, checkbox, file, submit, reset, button, image, radio, hidden, textarea.

Vì HTML_QuickForm không được phân phối kèm PEAR với PHP 4.3.x nên bạn cần cài đặt nó từ Internet hoặc tải về dưới dạng nén và dùng pear.bat để cài đặt. Ví dụ:

pear install c:downloadHTML_QuickForm-3.2.4pl1.tgz

Để làm quen với HTML_QuickForm, chúng ta sẽ tạo ra một biểu mẫu đơn giản sau:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta http-equiv=”Content-Type” content=”text/html”

charset=”UTF-8”>

<title>HTML_QuickForm Example 1</title> </head> <body>

<?php

require_once “HTML/QuickForm.php”;

$form = new HTML_QuickForm(formTest, get);

$form->addElement(header, headerQuickformtest, Golden Key Language Center Registration);

$form->addElement(text, txtName, What is your name?);

$form->addElement(reset, buttonClear, Clear);

$form->addElement(submit, buttonSubmit, Submit);

$form->display(); ?>

</body> </html>

Toàn bộ 4 dòng mã được gói trong cặp thẻ <?php và ?> ở trên làm một nhiệm vụ là in ra một biểu mẫu (form) chỉ có nhãn.

Dòng 1: require_once “HTML/QuickForm.php”; cho phép đưa thư viện HTML_QuickForm vào để phục vụ cho việc gọi các phương thức của nó sau này.

Dòng 2: $form = new HTML_QuickForm(formTest, get); tạo ra một đối tượng HTML_QuickForm có tên là frmTest và form này sẽ dùng phương thức GET để truyền các giá trị nó nhận được từ form để gửi lên server. Biến $form sẽ có nhiệm vụ tham chiếu đến đối tượng này.

Dòng 3: $form->addElement (header, headerQuickformtest, Golden Key Language Center Registration); giúp tạo ra một phần tử của form với phương thức addElement. Câu lệnh ở trên giúp tạo ra một phần tử giả làm nhiệm vụ đặt một nhãn trên đầu của form. Phần tử này có tên hdrQuickformtest để các câu lệnh sau này có thể tác động lên nó, và tạo ra nhãn hiện dòng chữ Golden Key Language Center Registration.

Dòng 4, 5, 6: Dùng addElement để tạo ra 3 phần tử form khác rất quen thuộc là phần tử text input với nhãn in dòng chữ What is your name (dòng 4), nút Reset với nhãn Clear dùng để đưa text input trở lại trạng thái nhập liệu ban đầu (dòng 5), nút Submit dùng để gửi thông tin từ text input đi.

Dòng 7: $form->display(); giúp hiển thị tất cả các phần tử form nói trên ra màn hình.

QuickForm có phương thức cho phép bạn phong tỏa một phần tử form để ngăn người dùng chỉnh sửa nội dung (ví dụ như hộp text), xử lý tính hợp lệ dữ liệu nhập vào, xử lý kết quả (sau khi form được “Submit”)… Bạn có thể tìm hiểu các tính năng của HTML_Quickform ở trang web http://pear.php.net/package/HTML_QuickForm.
Các mã nguồn PHP sử dụng PEAR và HTML_QuickForm được đề cập trong bài viết có thể tải về tại đây.