Trong bài này chúng ta sẽ vận dụng những kiên thức từ đầu series tới giờ để thực hiện viết một lớp xử lý database thường sử dụng trong PHP. Lưu ý với bạn rằng thư viện này mục đích là để các bạn hiểu được lập trình OOP chứ mình không ép các bạn lấy nó sử dụng trong project nhé.
Nội dung trong bài sẽ vận dụng thêm các kiến thức như các hàm xử lý mảng trong php, các hàm xử lý kết nối CSDL trong php như mysqli_connect, mysqli_close, mysqli_query ... Nên nếu bạn chưa biết nó là gì thì hãy tìm hiểu trước nhé.
1. Cấu trúc các lớp đối tượng xử lý database trong php
Vì mục đích của tôi sẽ trình bày các tính chất trong lập trình hướng đối tượng như tính kế thừa, tính trừu tượng ... nên trong bài này chúng ta sẽ xây dựng một mô hình các lớp như sau:
Trong đó file DB_driver
đóng vai trò là adapter, nó sẽ chứa các hàm basic xử lý kết nối, xử lý câu truy vấn sql như insert, update, delete. File DB_business
sẽ kế thừa file DB_driver
và ngoài các hàm kế thừa có thể sử dụng thì nó sẽ có thêm các hàm bổ trợ như hàm select theo id, delete theo id, update theo id. Còn file demo
sẽ chứa những đoạn code hướng dẫn cách sử dụng.
2. Viết thư viện sử lý DB_business [Adapter]
Trong file này chúng ta sẽ xây dựng một số hàm như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Thư Viện Xử Lý Database
class
DB_driver
{
// Biến lưu trữ kết nối
DB_business
1 DB_business
2DB_business
3
DB_business
6
DB_business
8 DB_business
9
DB_driver
0DB_driver
1
DB_driver
3
DB_driver
6
DB_business
8 DB_driver
9
DB_driver
0DB_driver
1
DB_driver
3
demo
6
DB_business
8 demo
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1// Thư Viện Xử Lý Database
2// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
1
DB_driver
3
class
0
DB_business
8 class
3// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1// Thư Viện Xử Lý Database
2// Thư Viện Xử Lý Database
1class
8// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
1
DB_driver
3
DB_driver
6
DB_business
8 DB_driver
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1class
8// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
1
DB_driver
3
0
DB_business
8
3// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1
6// Thư Viện Xử Lý Database
1class
8// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
1
DB_driver
3
// Biến lưu trữ kết nối
6
DB_business
8 // Biến lưu trữ kết nối
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1
6// Thư Viện Xử Lý Database
1class
8// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
1
DB_driver
3
DB_driver
3
Ý nghĩa của từng hàm mình đã comment rõ ràng rồi, bây giờ chúng ta sẽ xây dựng cho từng hàm nhé.
Hàm connect
1
2
3
4
5
6
7
8
9
10
11
12
DB_business
6
DB_business
8 DB_business
13
{
DB_business
16
DB_business
18 DB_business
19DB_business
20DB_business
21
DB_driver
0DB_business
23
DB_driver
0DB_business
20DB_business
26DB_business
27// Thư Viện Xử Lý Database
1DB_business
29// Thư Viện Xử Lý Database
1DB_business
31// Thư Viện Xử Lý Database
1DB_business
33DB_business
34DB_business
35 DB_business
36 DB_business
37DB_business
38DB_business
39
DB_driver
0DB_business
41
DB_driver
0DB_business
43DB_business
20DB_business
45DB_business
46DB_business
39
DB_driver
3
DB_driver
3
Hàm dis_connect
1
2
3
4
5
6
7
DB_driver
6
DB_business
8 DB_driver
9
DB_business
55
DB_business
18 DB_business
37DB_business
20DB_business
21
DB_driver
0DB_business
62DB_business
20DB_business
64
DB_driver
3
DB_driver
3
Hàm insert
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
demo
6
DB_business
8 demo
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1// Thư Viện Xử Lý Database
2DB_business
34
{
DB_business
23
DB_business
20DB_business
80
DB_business
82
DB_business
84 DB_business
85DB_business
86DB_business
3
DB_business
89
DB_business
91 DB_business
85DB_business
86DB_business
3
DB_business
96
DB_business
98 DB_business
37// Thư Viện Xử Lý Database
2 DB_driver
01 DB_driver
02 DB_driver
03DB_driver
04// Thư Viện Xử Lý Database
3
DB_driver
0DB_business
84 DB_driver
08DB_driver
09DB_business
3
DB_driver
0DB_business
91 DB_driver
08DB_driver
14DB_driver
15DB_driver
04DB_driver
17DB_driver
18DB_business
3
DB_driver
3
DB_driver
23
DB_driver
25 DB_business
85DB_driver
27DB_driver
28// Thư Viện Xử Lý Database
0DB_driver
28DB_driver
31DB_driver
32DB_business
84// Thư Viện Xử Lý Database
1DB_driver
35DB_driver
17DB_driver
37DB_driver
32DB_business
91// Thư Viện Xử Lý Database
1DB_driver
35DB_driver
17DB_driver
43DB_business
3
DB_driver
46 DB_business
43DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
3
Hàm update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class
0
DB_business
8 class
3// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1// Thư Viện Xử Lý Database
2// Thư Viện Xử Lý Database
1class
8DB_business
34
{
DB_business
23
DB_business
20DB_business
80
DB_driver
25 DB_business
85DB_business
86DB_business
3
DB_business
96
DB_business
98 DB_business
37// Thư Viện Xử Lý Database
2 DB_driver
01 DB_driver
02 DB_driver
03DB_driver
04// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
25 DB_driver
08DB_driver
87DB_driver
15DB_driver
04DB_driver
17DB_driver
91DB_business
3
DB_driver
3
DB_driver
96
DB_driver
25 DB_business
85demo
00DB_driver
28// Thư Viện Xử Lý Database
0DB_driver
28demo
04DB_driver
32DB_driver
25// Thư Viện Xử Lý Database
1DB_driver
35DB_driver
17demo
10DB_driver
28class
8DB_business
3
DB_driver
46 DB_business
43DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
3
Hàm remove
1
2
3
4
5
6
7
8
9
DB_driver
6
DB_business
8 DB_driver
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1class
8// Thư Viện Xử Lý Database
3
DB_business
23
DB_business
20DB_business
80
demo
35
DB_driver
25 DB_business
85demo
39DB_business
3
DB_driver
46 DB_business
43DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
3
Hàm lấy danh sách
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
0
DB_business
8
3DB_driver
25DB_business
34
{
DB_business
23
DB_business
20DB_business
80
demo
61 demo
62DB_business
20DB_business
45DB_driver
25DB_business
39
DB_business
18 DB_business
19demo
61// Thư Viện Xử Lý Database
3
DB_driver
0DB_business
36 DB_business
37demo
75DB_business
39
DB_driver
3
demo
80 DB_business
85demo
82demo
83
demo
85
demo
87 DB_business
37demo
89 demo
90demo
61demo
92
DB_driver
0demo
80demo
95demo
89DB_business
3
DB_driver
3
// Thư Viện Xử Lý Database
01
// Thư Viện Xử Lý Database
03demo
61DB_business
39
DB_driver
46 demo
80DB_business
3
DB_driver
3
Hàm lấy 1 row
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Biến lưu trữ kết nối
6
DB_business
8 // Biến lưu trữ kết nối
9DB_driver
25DB_business
34
{
DB_business
23
DB_business
20DB_business
80
demo
61 demo
62DB_business
20DB_business
45DB_driver
25DB_business
39
DB_business
18 DB_business
19demo
61// Thư Viện Xử Lý Database
3
DB_driver
0DB_business
36 DB_business
37demo
75DB_business
39
DB_driver
3
demo
89 demo
90demo
61DB_business
39
// Thư Viện Xử Lý Database
01
// Thư Viện Xử Lý Database
03demo
61DB_business
39
DB_business
18 DB_business
37demo
89// Thư Viện Xử Lý Database
3
DB_driver
0DB_driver
46 demo
89DB_business
3
DB_driver
3
DB_driver
46 // Thư Viện Xử Lý Database
65
DB_driver
3
Trong mỗi hàm hy vọng các bạn hiểu được ý nghĩa của từng đoạn code :D. Sau đây là nội dung toàn file DB_driver:
Toàn File DB_driver.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Thư Viện Xử Lý Database
class
DB_driver
{
// Biến lưu trữ kết nối
DB_business
1 DB_business
2DB_business
3
DB_business
6
DB_business
8 DB_business
13
{
DB_driver
0DB_business
16
DB_driver
0DB_business
18 DB_business
19DB_business
20DB_business
21
// Thư Viện Xử Lý Database
92DB_business
23
// Thư Viện Xử Lý Database
92DB_business
20DB_business
26DB_business
27// Thư Viện Xử Lý Database
1DB_business
29// Thư Viện Xử Lý Database
1DB_business
31// Thư Viện Xử Lý Database
1DB_business
33DB_business
34DB_business
35 DB_business
36 DB_business
37DB_business
38DB_business
39
// Thư Viện Xử Lý Database
92DB_business
41
// Thư Viện Xử Lý Database
92DB_business
43DB_business
20DB_business
45DB_business
46DB_business
39
DB_driver
0DB_driver
3
DB_driver
3
DB_driver
6
DB_business
8 DB_driver
9
DB_driver
0DB_business
55
DB_driver
0DB_business
18 DB_business
37DB_business
20DB_business
21
// Thư Viện Xử Lý Database
92DB_business
62DB_business
20DB_business
64
DB_driver
0DB_driver
3
DB_driver
3
demo
6
DB_business
8 demo
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1// Thư Viện Xử Lý Database
2DB_business
34
{
DB_driver
0DB_business
23
DB_driver
0DB_business
20DB_business
80
DB_driver
0DB_business
82
DB_driver
0DB_business
84 DB_business
85DB_business
86DB_business
3
DB_driver
0DB_business
89
DB_driver
0DB_business
91 DB_business
85DB_business
86DB_business
3
DB_driver
0DB_business
96
DB_driver
0DB_business
98 DB_business
37// Thư Viện Xử Lý Database
2 DB_driver
01 DB_driver
02 DB_driver
03DB_driver
04// Thư Viện Xử Lý Database
3
// Thư Viện Xử Lý Database
92DB_business
84 DB_driver
08DB_driver
09DB_business
3
// Thư Viện Xử Lý Database
92DB_business
91 DB_driver
08DB_driver
14DB_driver
15DB_driver
04DB_driver
17DB_driver
18DB_business
3
DB_driver
0DB_driver
3
DB_driver
0DB_driver
23
DB_driver
0DB_driver
25 DB_business
85DB_driver
27DB_driver
28// Thư Viện Xử Lý Database
0DB_driver
28DB_driver
31DB_driver
32DB_business
84// Thư Viện Xử Lý Database
1DB_driver
35DB_driver
17DB_driver
37DB_driver
32DB_business
91// Thư Viện Xử Lý Database
1DB_driver
35DB_driver
17DB_driver
43DB_business
3
DB_driver
0DB_driver
46 DB_business
43DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
3
class
0
DB_business
8 class
3// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1// Thư Viện Xử Lý Database
2// Thư Viện Xử Lý Database
1class
8DB_business
34
{
DB_driver
0DB_business
23
DB_driver
0DB_business
20DB_business
80
DB_driver
0DB_driver
25 DB_business
85DB_business
86DB_business
3
DB_driver
0DB_business
96
DB_driver
0DB_business
98 DB_business
37// Thư Viện Xử Lý Database
2 DB_driver
01 DB_driver
02 DB_driver
03DB_driver
04// Thư Viện Xử Lý Database
3
// Thư Viện Xử Lý Database
92DB_driver
25 DB_driver
08DB_driver
87DB_driver
15DB_driver
04DB_driver
17DB_driver
91DB_business
3
DB_driver
0DB_driver
3
DB_driver
0DB_driver
96
DB_driver
0DB_driver
25 DB_business
85demo
00DB_driver
28// Thư Viện Xử Lý Database
0DB_driver
28demo
04DB_driver
32DB_driver
25// Thư Viện Xử Lý Database
1DB_driver
35DB_driver
17demo
10DB_driver
28class
8DB_business
3
DB_driver
0DB_driver
46 DB_business
43DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
3
DB_driver
6
DB_business
8 DB_driver
9// Thư Viện Xử Lý Database
0// Thư Viện Xử Lý Database
1class
8// Thư Viện Xử Lý Database
3
DB_driver
0DB_business
23
DB_driver
0DB_business
20DB_business
80
DB_driver
0
DB_driver
0demo
35
DB_driver
0DB_driver
25 DB_business
85demo
39DB_business
3
DB_driver
0DB_driver
46 DB_business
43DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
3
0
DB_business
8
3DB_driver
25DB_business
34
{
DB_driver
0DB_business
23
DB_driver
0DB_business
20DB_business
80
DB_driver
0
DB_driver
0demo
61 demo
62DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
0DB_business
18 DB_business
19demo
61// Thư Viện Xử Lý Database
3
// Thư Viện Xử Lý Database
92DB_business
36 DB_business
37demo
75DB_business
39
DB_driver
0DB_driver
3
DB_driver
0demo
80 DB_business
85demo
82demo
83
DB_driver
0demo
85
DB_driver
0demo
87 DB_business
37demo
89 demo
90demo
61demo
92
// Thư Viện Xử Lý Database
92demo
80demo
95demo
89DB_business
3
DB_driver
0DB_driver
3
DB_driver
0// Thư Viện Xử Lý Database
01
DB_driver
0// Thư Viện Xử Lý Database
03demo
61DB_business
39
DB_driver
0DB_driver
46 demo
80DB_business
3
DB_driver
3
// Biến lưu trữ kết nối
6
DB_business
8 // Biến lưu trữ kết nối
9DB_driver
25DB_business
34
{
DB_driver
0DB_business
23
DB_driver
0DB_business
20DB_business
80
DB_driver
0
DB_driver
0demo
61 demo
62DB_business
20DB_business
45DB_driver
25DB_business
39
DB_driver
0DB_business
18 DB_business
19demo
61// Thư Viện Xử Lý Database
3
// Thư Viện Xử Lý Database
92DB_business
36 DB_business
37demo
75DB_business
39
DB_driver
0DB_driver
3
DB_driver
0demo
89 demo
90demo
61DB_business
39
DB_driver
0// Thư Viện Xử Lý Database
01
DB_driver
0// Thư Viện Xử Lý Database
03demo
61DB_business
39
DB_driver
0DB_business
18 DB_business
37demo
89// Thư Viện Xử Lý Database
3
// Thư Viện Xử Lý Database
92DB_driver
46 demo
89DB_business
3
DB_driver
0DB_driver
3
DB_driver
0DB_driver
46 // Thư Viện Xử Lý Database
65
DB_driver
3
DB_driver
3
3. Một số cách sử dụng thư viện
Trước tiên bạn tạo một database tên demo và tạo một table như sau:
1
2
3
4
5
6
64
65
66
67
68
69
70
71
72
67
74
75
69
77
78
77
80
81
82
83
84
74// Thư Viện Xử Lý Database
1
69
88
80
81
82
83
84
74// Thư Viện Xử Lý Database
1
69
97
98
99
// Biến lưu trữ kết nối
00
84 // Biến lưu trữ kết nối
02
82// Biến lưu trữ kết nối
04
Trong file // Biến lưu trữ kết nối
05 bạn sẽ thực hiện lần lượt các đoạn code sau và xem trong db sẽ thấy tác dụng của thư viện này.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Biến lưu trữ kết nối
06 DB_business
37// Biến lưu trữ kết nối
08DB_business
39
// Biến lưu trữ kết nối
10
// Biến lưu trữ kết nối
11 DB_business
85// Biến lưu trữ kết nối
13 // Biến lưu trữ kết nối
14
// Biến lưu trữ kết nối
15
// Biến lưu trữ kết nối
11// Biến lưu trữ kết nối
17// Biến lưu trữ kết nối
18// Thư Viện Xử Lý Database
1demo
82DB_business
37
// Biến lưu trữ kết nối
23 DB_driver
03// Biến lưu trữ kết nối
25// Thư Viện Xử Lý Database
1
// Biến lưu trữ kết nối
28 DB_driver
03// Biến lưu trữ kết nối
30
// Biến lưu trữ kết nối
31
// Biến lưu trữ kết nối
32
// Biến lưu trữ kết nối
11// Biến lưu trữ kết nối
34// Biến lưu trữ kết nối
18// Thư Viện Xử Lý Database
1demo
82DB_business
37
// Biến lưu trữ kết nối
23 DB_driver
03// Biến lưu trữ kết nối
42
// Biến lưu trữ kết nối
43// Biến lưu trữ kết nối
44DB_business
39
// Biến lưu trữ kết nối
46
// Biến lưu trữ kết nối
11// Biến lưu trữ kết nối
48// Biến lưu trữ kết nối
18// Thư Viện Xử Lý Database
1// Biến lưu trữ kết nối
44DB_business
39
// Biến lưu trữ kết nối
53
// Biến lưu trữ kết nối
54// Biến lưu trữ kết nối
11// Biến lưu trữ kết nối
56// Biến lưu trữ kết nối
57// Biến lưu trữ kết nối
31
// Biến lưu trữ kết nối
59
// Biến lưu trữ kết nối
54// Biến lưu trữ kết nối
11// Biến lưu trữ kết nối
62// Biến lưu trữ kết nối
63// Biến lưu trữ kết nối
31
Note: Vì bài tương đối dài nên tôi sẽ trình bày tiêp ở bài tiếp theo nhé
4. Lời kết
Trong bài này các bạn chỉ cần hiểu được ý nghĩa của đối tượng trong PHP, hiểu được một số hàm xử lý database trong PHP thì sẽ hiểu được những đoạn code mà mình đã trình bày. Trong thực tế đó chỉ là những đoạn code đơn giản, còn những đoạn code phức tạp hơn nhiều, thậm chí dài đến mấy ngàn dòng.