Bài giảng PHP - Chương 6: Tổ chức ứng dụng PHP - Nguyễn Phú Quảng

VI.2. Hệ thống template  Trang Web có giao diện dễ thay đổi là 1 tiêu chí rất quan trọng  Nếu kết hợp mã HTML và PHP không tốt thì rất khó cho người thiết kế giao diện và người lập trình làm việc với nhau  khả năng thay đổi giao diện khó khăn  Một phương pháp hiệu quả là sử dụng các file template (.HTML – được thiết kế từ các chương trình: DW, FrontPage.). Các file template này thường không chứa mã PHP mà chỉ có các thông tin dưới dạng quy ước (thường là các tên gọi, giá trị được đặt theo 1 quy ước nhất định, các giá trị này sẽ được thay thế khi chạy chương trình bằng PHP)

pdf10 trang | Chia sẻ: thanhle95 | Lượt xem: 588 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng PHP - Chương 6: Tổ chức ứng dụng PHP - Nguyễn Phú Quảng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
VI. Tổ chức ứng dụng PHP VI.2. Hệ thống template VI.3. Quản lý output VI.4. Quản lý lỗi VI.5. Tối ưu hóa VI.2. Hệ thống template  Trang Web có giao diện dễ thay đổi là 1 tiêu chí rất quan trọng  Nếu kết hợp mã HTML và PHP không tốt thì rất khó cho người thiết kế giao diện và người lập trình làm việc với nhau  khả năng thay đổi giao diện khó khăn  Một phương pháp hiệu quả là sử dụng các file template (.HTML – được thiết kế từ các chương trình: DW, FrontPage...). Các file template này thường không chứa mã PHP mà chỉ có các thông tin dưới dạng quy ước (thường là các tên gọi, giá trị được đặt theo 1 quy ước nhất định, các giá trị này sẽ được thay thế khi chạy chương trình bằng PHP) VI.2. Hệ thống template (2) <?php $templatePath = "./templates/"; function MakeWebPageFromTemplate($templateName, $params) { global $templatePath; $templateName = $templatePath . $templateName; if ($f = fopen($templateName, "rt")) { $templateContent = fread($f, filesize($templateName)); fclose($f); } $templateContent = str_replace( "\"./", "\"" . $templatePath, $templateContent); foreach ($params as $paramName=>$paramVal) { $templateContent = str_replace( $paramName, $paramVal, $templateContent); } return $templateContent; } ?> VI.3. Quản lý output  Thường thì các hàm ghi thông tin ra browser. Tuy nhiên có nhiều trường hợp chúng ta không muốn như vậy.  Bạn có thể sử dụng vùng đệm ra (output buffer) để các lệnh ghi thông tin ghi dữ liệu lên đó  Các hàm với output buffer: ob_start(), ob_get_length(), ob_get_contents(), ob_flush(), ob_end_flush(); ob_end_clean()  <?php ob_start(); phpinfo(); $phpinfo = ob_get_contents(); ob_end_clean(); if (strpos($phpinfo, "module_pdf") === FALSE) { echo "You do not have PDF support in your PHP, sorry."; } else { echo "Congratulations, you have PDF support!"; } ?> VI.4. Quản lý lỗi VI.4.1. Thông báo lỗi VI.4.2. Giấu lỗi VI.4.3. Phát sinh lỗi VI.4.4. Hàm xử lý lỗi VI.4.1. Thông báo lỗi  Thông thường, khi có lỗi, thông báo lỗi được in ra output  Có 3 mức độ thông báo: notices, warnings, errors  Mặc định của PHP là các thông báo warning, error sẽ được in ra browser, bạn có thể thay đổi trong PHP.INI hoặc trong thời gian chạy bằng hàm error_reporting() (các tham số E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR) VI.4.1. Thông báo lỗi (2) Value Meaning E_ERROR Runtime errors E_WARNING Runtime warnings E_PARSE Compile-time parse errors E_NOTICE Runtime notices E_CORE_ERROR Errors generated internally by PHP E_CORE_WARNING Warnings generated internally by PHP E_COMPILE_ERROR Errors generated internally by the Zend scripting engine E_COMPILE_WARNING Warnings generated internally by the Zend scripting engine E_USER_ERROR Runtime errors generated by a call to trigger_error( ) E_USER_WARNING Runtime warnings generated by a call to trigger_error( ) E_USER_NOTICE Runtime warnings generated by a call to trigger_error( ) E_ALL All of the above options VI.4.2. Giấu lỗi  Sử dụng toán tử @ để ngăn không cho output lỗi ra browser  Thiết lập track_errors trong php.ini để bắt được các thông báo lỗi qua biến $php_errormsg  Để ngăn không cho tất cả các thông báo lỗi trên browser, sử dụng hàm error_reporting(0)  <?php ini_set("track_errors", "1"); $value = 2/0; $value = @(2/0); echo "$php_errormsg"; ini_restore("track_errors"); ?>  <?php error_reporting(0); ini_set("track_errors", "1"); $value = 2/0; echo "$php_errormsg"; ini_restore("track_errors"); ?> VI.4.3. Phát sinh lỗi  Bạn có thể làm phát sinh lỗi người dùng bằng hàm trigger_error  trigger_error(message [, type]);  type: E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE (default)  <?php function divider($a, $b) { if($b == 0) { trigger_error('$b cannot be 0', _USER_ERROR); } return($a / $b); } ?> VI.4.4. Hàm xử lý lỗi  Giấu tất cả các lỗi không phải là một phương án hay, để quản lý lỗi tốt hơn, bạn nên dùng hàm xử lý lỗi (error handler)  Error handler được thiết lập bằng hàm set_error_handler(), khôi phục lại bằng hàm restore_error_handler()  <?php function my_handler($error, $errorstring, $filename, $line, $symbol) { echo "$error|$errorstring|$filename|$line\n"; } set_error_handler('my_handler'); echo 4/0; $f = file("linhtinh"); ?>
Tài liệu liên quan