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)
10 trang |
Chia sẻ: thanhle95 | Lượt xem: 588 | Lượt tải: 1
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");
?>