PHP NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 16: Class xử lý database trong hướng đối tượng (phần 2)

Ở bài trước chúng ta đã xây dựng xong lớp DB_driver dùng để xử lý thao tác trực tiếp với database, nhưng trong lớp đó chưa thể hiện được những tính chất trong lập trình hướng đối tượng. Vậy thì trong bài này chúng ta sẽ tiếp hành xây dựng một lớp Business kế thừa từ lớp Driver. Vì thế ngoài những hàm có sẵn ở lớp cha thì chúng ta sẽ tạo thêm một số hàm thông dụng để dễ thao tác hơn.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong lớp Business này chúng ta sẽ có một số thay đổi, lớp này sẽ đại diện cho một table trong database nên nó sẽ có các thuộc tính như tên table, tên field, khóa chính ... . Và còn rất nhiều thứ nhưng nếu trình bày hết sẽ rất dài dòng nên trong bài này mình chỉ trình bày một số điểm ngắn gọn nhưng sẽ dễ dàng hiểu bài yes

1. Cấu trúc lớp bussiness xử lý database

Dưới đây là cấu trúc các hàm trong thư viện của chúng ta:

require "DB_driver.php";


class DB_business extends DB_driver 
{
    // Tên Table
    protected $_table_name = '';
    
    // Tên Khóa Chính
    protected $_key = '';
    
    // Hàm Khởi Tạo
    function __construct() {
        parent::connect();
    }
    
    // Hàm ngắt kết nối
    function __destruct() {
        parent::dis_connect();
    }
    
    // Hàm xóa theo id
    function delete_by_id($table, $id){
        
    }
    // Hàm thêm mới
    function add_new($data){
    }    

    // Hàm cập nhật theo id
    function update_by_id($id){
        
    }
    
    // hàm select theo id
    function select_by_id($select, $id){
        
    }
}
Trong đó các bạn để ý rằng mình có khai báo 2 thuộc tính là $_table_name và $_key tương ứng với tên table và tên field khóa chính. Ngoài ra còn một số điểm như sau:

  • Hàm khởi tạo mình sẽ kết nối database luôn
  • Tại hàm hủy sẽ ngưng kết nối database
  • Có thêm ba hàm chính là insert, update, delete theo id

Hàm add_new

// Hàm thêm mới
function add_new($data){
    return parent::insert($this->_table_name, $data);
}

Hàm delete_by_id

// Hàm xóa theo id
function delete_by_id($id){
    return $this->remove($this->_table_name, $this->_key.'='.(int)$id);
}

Hàm update_by_id

// Hàm cập nhật theo id
function update_by_id($data, $id){
    return $this->update($this->_table_name, $data, $this->_key."=".(int)$id);
}

Hàm select_by_id

// hàm select theo id
function select_by_id($select, $id){
    $sql = "select $select from ".$this->_table_name." where ".$this->_key." = ".(int)$id;
    return $this->get_row($sql);
}

Như vậy thông qua lớp này mà ta đã ứng dụng được các tính chất trong lập trình hướng đối tượng, hàm khởi tạo và hàm hủy, tính kế thừa, ...

Bài viết này được đăng tại [free tuts .net]

Sau đây là nội dung toàn file.

require "DB_driver.php";


class DB_business extends DB_driver 
{
    // Tên Table
    protected $_table_name = '';
    
    // Tên Khóa Chính
    protected $_key = '';
    
    // Hàm Khởi Tạo
    function __construct() {
        parent::connect();
    }
    
    // Hàm ngắt kết nối
    function __destruct() {
        parent::dis_connect();
    }
    
    // Hàm thêm mới
    function add_new($data){
        return parent::insert($this->_table_name, $data);
    }

    // Hàm xóa theo id
    function delete_by_id($id){
        return $this->remove($this->_table_name, $this->_key.'='.(int)$id);
    }

    // Hàm cập nhật theo id
    function update_by_id($data, $id){
        return $this->update($this->_table_name, $data, $this->_key."=".(int)$id);
    }

    // hàm select theo id
    function select_by_id($select, $id){
        $sql = "select $select from ".$this->_table_name." where ".$this->_key." = ".(int)$id;
        return $this->get_row($sql);
    }
}

2. Cách sử dụng thư viện xử lý database

Vì ở lớp trên đại diện cho mỗi table nên bây giờ chúng ta phải tạo một lớp đại diện chính xác table nào đó  rồi kế thừa từ lớp trên. Trong ví dụ trước mình sử dụng table customer nên trong phần này ta tiếp tục sử dụng database đó luôn nhé. Nội dung của file demo.php như sau:

require ('DB_business.php');

// Lớp khách hàng
class Customer extends DB_business 
{
    function __construct() 
    {
        // Khai báo tên bảng
        $this->_table_name = 'customer';
        
        // Khai báo tên field id
        $this->_key = 'id';
        
        // Gọi hàm khởi tạo cha
        parent::__construct();
    }
}

// Khởi tạo lớp khách hàng
$customer = new Customer();

// Thêm khách hàng
$customer->add_new(array(
    'name' => 'Nguyễn Văn Cường',
    'phone' => '0970 306 603'
));

// Xóa khách hàng
$customer->delete_by_id(1);

// Update khách hàng
$customer->update_by_id(array(
    'name' => 'thehalfheart'
), 2);

// Lấy chi tiết khách hàng
var_dump($customer->select_by_id('*', 2));

Qua phần comment chắc hẳn bạn cũng hiểu được bài rồi nên mình sẽ không giải thích gì thêm. Chỉ có một phần lưu ý là trong phần này mình sử dụng rất nhiều các tính chất của OOP nên nếu bạn chưa hiểu bài thì coi lại mấy bài trước nhé.

3. Lời kết

Đây là một ví dụ đơn giản về cách viết Class trong lập trình hướng đối tượng, ví dụ này chỉ mang tính tham khảo chứ mình không khuyến khích các bạn sử dụng nhé, vì sau này các bạn học lên PHP FW thì sẽ sử dụng những thư viện xử lý database mạnh hơn rất nhiều. Chúc các bạn vui vẻ.

Danh sách file tải về

Tên file tải về Pass giải nén
Tải bài học định dạng PDF freetuts.net hoặc gameportable.net

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top