5.x

Kiểm tra hình ảnh tải lên

Đây là một module thí dụ cách:

  • Tạo một biểu mẫu upload hình ảnh,
  • Kiểm tra
    • Tập tin được tải lên có phải là một ảnh?
    • Có vượt quá dung lượng cho phép?
    • Có vượt quá kích thước cho phép?
  • Lưu tập tin vào thư mục tập tin của hệ thống.

Định dạng block

Sử dụng Drupal để xây dựng các ứng dụng web, chắc chắn có lúc, chúng ta cần định dạng các block theo region, theo module, ... Thí dụ, chúng ta font chữ ở các block bên trái nhỏ hơn các block phía bên phải, các block bên phải có màu sắc, độ bo viềng khác với các block ở footer, ... yêu cầu tưởng chừng khó khăn, nhưng trở nên rất dễ dàng. Chúng ta thử xem hàm tạo block mặc định của Drupal:

<?php
function theme_block($block) {
  
$output  "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">\n";
  
$output .= " <h2 class=\"title\">$block->subject</h2>\n";
  
$output .= " <div class=\"content\">$block->content</div>\n";
  
$output .= "</div>\n";
  return 
$output;
}
?>

URL gọn

Cập nhật: Đối với Ubuntu OS, xem thêm bài viết này.

Một ứng dụng web, thường dựa vào các tham số truyền vào từ URL để thực hiện việc xử lý và tạo nội dung cho các trang web của mình. Một URL, đại khái, có thể là http://www.example.com/?foo=bar. Đối với Drupal, tham số được truyền tới được tập trung vào biến q. Thí dụ, đối với yêu cầu có dạng http://www.example.com/?q=node/83, Drupal sẽ phân tích và trình bày ra giao diện người dùng nội dung chi tiết của node có mã số là 83.

Sức mạnh form_alter

hook_form_alter là một công cụ cực kỳ mạnh mà Drupal cung cấp. Chúng ta có thể sử dụng nó để thực hiện được nhiều việc, tưởng chừng như không thể: Thay đổi cấu trúc một form mà không cần sửa mã nguồn, định dạng form, thêm kịch bản xử lý cá nhân vào form hệ thống, ...

Các ngoại lệ (Exceptions)

PHP5 giới thiệu "ngoại lệ" có cú pháp tương tự như ở Java. Mọi ngoại lệ đều là một mở rộng của lớp ngoại lệ chuẩn -- chúng ta có thể xây dựng các ngoại lệ tùy chỉnh.

<?php
try { /* begin exception block */
  
$fp fopen(__FILE__"r");
  if (!
$fp) {
      
/* throw exception, error occurred */
      
throw new Exception('no such file'9);
  }
} catch (
Exception $e) { /* what to do on error (thrown exception) */
  
echo $e->getCode(); // error code
  
echo $e->getFile(); // file where exception was thrown
  
echo $e->getLine(); // line on which exception was thrown
  
echo $e->getMessage(); // error message
  
print_r($e->getTrace()); // print backtrace
}
?>

Thí dụ sử dụng ngoại lệ tuỳ chỉnh:

<?php
?>

Giao diện (Interfaces)

Với PHP5, chúng ta đã có thể định nghĩa các đối tượng giao diện (object interfaces). Sử dụng giao diện để chắc rằng các lớp dựa trên giao diện này sẽ cung cấp đầy đủ các chức năng.

<?php
interface read_file {
  function 
open($file_name);
  function 
read($bytes);
  function 
close();
}

class 
rf implements read_file {
  private 
$fp;

  function 
open($file_name) { $this->fp fopen($file_name"r"); }
  function 
read($bytes) { return fread($this->fp$bytes); }
  function 
close() { fclose($this->fp); }
}

$f = new rf();
/* ensure that object inside $ implements read_file interface */
if ($f instanceof read_file) {
  
$f->open(__FILE__);
  echo 
$f->read(4);
  
$f->close();    
}
?>

Lớp trừu tượng (abstract)

- PHP5 giới thiệu các lớp và các phương thức trừu tượng.
- Một phương thức trừu tượng chỉ định nghĩa tên của nó mà không định nghĩa kịch bản thực thi.
- Một lớp chứa các phương thức trừu tượng phải được định nghĩa là trừu tượng

<?php
abstract class ab {
    abstract public function 
test();
}

/* the implementing class must implement all methods
 * specified in the abstract class */
class imp_ab extends ab {
    public function 
test() { 
        echo 
"implemented class was called";
    }
}

$a = new imp_ab();
$a->test();
?>

Syndicate content