Khái niệm OOP trong PHP

PHP giới thiệu các tính năng lập trình hướng đối tượng từ phiên bản 5. 0. Lập trình hướng đối tượng là một trong những mô hình lập trình phổ biến nhất dựa trên khái niệm về đối tượng và lớp.

PHP OOP cho phép bạn cấu trúc một ứng dụng phức tạp thành một cấu trúc đơn giản hơn và dễ bảo trì hơn

Tôi cho rằng bạn đã quen thuộc với các khái niệm và thuật ngữ Lập trình hướng đối tượng (OOP). Nếu không, hãy đọc "Java OOP" hoặc "C++ OOP"

Bắt đầu bằng ví dụ

Hãy bắt đầu với các ví dụ trên

  • Định nghĩa một lớp với các biến thành viên riêng, hàm tạo, hàm hủy, getters/setters công khai và phương thức công khai;
  • Phân bổ các cá thể thể hiện của lớp;
  • Truy cập biến/hàm của cá thể

Thí dụ. Lớp MyCircle

Chúng ta sẽ bắt đầu với một lớp có tên là

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5, mô hình một đường tròn có bán kính cụ thể, như thể hiện trong sơ đồ lớp sau

Khái niệm OOP trong PHP
MyCircle. php

Định nghĩa của lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5

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
MyCircleTest. php

Lái thử cho hạng

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Bạn có thể chạy chương trình thông qua PHP CLI (Giao diện dòng lệnh)

$ php MyCircleTest.php

Các kết quả đầu ra dự kiến ​​là

Thí dụ. Lớp MyTime

Lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
8 mô hình hóa một thể hiện thời gian của giờ, phút và giây, như thể hiện trong sơ đồ lớp sau

Khái niệm OOP trong PHP
Thời gian của tôi. php

Định nghĩa lớp cho lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
8

________số 8
MyTimeTest. php

Lái thử cho hạng

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0

đầu ra là

Cách hoạt động của OOP trong OOP

Xác định một lớp

Một lớp bao gồm các biến thành viên và hàm. Để xác định một lớp, sử dụng từ khóa

$ php MyCircleTest.php
1, 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
2
Hàm tạo __construct()

Constructor là một hàm đặc biệt có tên là

$ php MyCircleTest.php
2. Trình xây dựng được sử dụng để xây dựng một thể hiện và khởi tạo các biến thể hiện. Để xây dựng một thể hiện của một lớp, bạn cần gọi hàm tạo thông qua toán tử
$ php MyCircleTest.php
3 (như minh họa trong trình điều khiển thử nghiệm). Hàm tạo không trả về bất cứ thứ gì, do đó, sẽ không có câu lệnh
$ php MyCircleTest.php
4 bên trong hàm tạo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
6

PHP KHÔNG hỗ trợ nạp chồng hàm (không giống như C++ và Java). Nói cách khác, chỉ có một phiên bản của hàm tạo. Tuy nhiên, trong PHP, bạn có thể cung cấp giá trị mặc định cho các tham số của hàm, bao gồm cả hàm tạo. Theo cách này, hàm tạo có thể được gọi với các đối số khác nhau. Ví dụ,

PHP không cung cấp hàm tạo mặc định không có đối số (không có đối số) (không giống như Java). Bạn cần xác định rõ ràng hàm tạo, nếu được yêu cầu

Hàm hủy __destroy()

Tương tự, bạn có thể định nghĩa hàm hủy có tên là

$ php MyCircleTest.php
5 cho một lớp. Hàm hủy sẽ không mang bất kỳ tham số nào. Nó sẽ được chạy trước khi phiên bản bị hủy (hoặc bị hủy bỏ). Hàm hủy không được sử dụng phổ biến

Từ kết quả của các ví dụ trên, có thể thấy rằng hàm hủy được gọi trên tất cả các đối tượng khi đến cuối tệp, trước khi chương trình thoát. Để kích hoạt hàm hủy một cách rõ ràng, bạn có thể gọi

$ php MyCircleTest.php
6 trên một đối tượng. Ví dụ,

Cấp phát một thực thể - Toán tử mới

Để cấp phát một thể hiện của một lớp, hãy sử dụng toán tử

$ php MyCircleTest.php
3 để gọi một hàm tạo, ở dạng
$ php MyCircleTest.php
8

Truy cập Thành viên - Thành viên của Nhà điều hành (->)

Để truy cập các biến/hàm thành viên, hãy sử dụng toán tử thành viên (

$ php MyCircleTest.php
9), ở dạng
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
0. Ví dụ,

$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
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
1 đề cập đến trường hợp hiện tại. Để tham chiếu một biến/hàm thành viên TRONG định nghĩa lớp, bạn PHẢI đặt trước
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
1, e. g. ,
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
3,
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
4. Hãy lưu ý rằng bạn không thể bỏ qua
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
1 (không giống như Java)

Công cụ sửa đổi kiểm soát truy cập - công khai, riêng tư và được bảo vệ

Chúng ta có thể sử dụng công cụ sửa đổi kiểm soát truy cập để hạn chế quyền truy cập vào một biến/hàm thành viên. PHP hỗ trợ các công cụ sửa đổi kiểm soát truy cập này cho các biến và hàm thành viên

  • công cộng. Có thể truy cập bởi tất cả. Đây là mặc định
  • riêng. Chỉ có thể truy cập trong lớp
  • được bảo vệ. Có thể truy cập bởi các lớp con
Getters và Setters

Getters là setters được sử dụng để truy cập và biến đổi các biến thành viên riêng tư, như trong các ví dụ trên

Một thực tế PHP phổ biến là sử dụng cùng một chức năng cho getter kiêm setter, được phân biệt bởi đối số của nó. Ví dụ,

__toString()

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
6 là một trong những phương thức được gọi là ma thuật, sẽ trả về một chuỗi biểu diễn của phiên bản hiện tại. Nó được gọi ngầm khi đối tượng được coi là một chuỗi. Ví dụ,

Hãy lưu ý rằng nếu

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
6 không được xác định, "
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
8" sẽ gây ra lỗi thời gian chạ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
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
6 tương tự như
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
00 trong Java. Tuy nhiên, không giống như các lớp Java luôn kế thừa một
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
00 từ lớp cha gốc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
02,
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
6 trong PHP phải được định nghĩa rõ ràng cho mỗi lớp

__LỚP__

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
04 là một trong những hằng số ma thuật được gọi là trong PHP, giữ tên lớp trong chuỗi

DocBlock (hoặc PhpDoc) Nhận xét

Các nhận xét kèm theo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
05 được gọi là "DocBlock" hoặc "PhpDoc", có thể được trích xuất để tạo tài liệu (như JavaDoc). Bạn có thể sử dụng các đánh dấu như
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
06 và
$ php MyCircleTest.php
4 để nhắm mục tiêu các mô tả

Xử lý ngoại lệ và thử bắt cuối cùng

Các câu lệnh trong khối thử được thực hiện theo trình tự. Nếu một trong các câu lệnh đưa ra một ngoại lệ, các câu lệnh còn lại sẽ không được thực thi. Thay vào đó, việc thực thi chuyển sang khối catch. Nếu tất cả các câu lệnh trong khối try không đưa ra bất kỳ ngoại lệ nào, thì khối try sẽ hoàn thành và khối catch không được thực thi. Lưu ý rằng quá trình thực thi luôn tiếp tục sau khối try-catch, bất kể có ngoại lệ nào hay không

Cấu trúc try-catch hỗ trợ xử lý lỗi/ngoại lệ một cách duyên dáng. Nếu không có try-catch, chương trình sẽ bị ngắt đột ngột khi gặp ngoại lệ. Cấu trúc try-catch cũng tách biệt logic chính và logic xử lý ngoại lệ, để cải thiện kỹ thuật phần mềm

OOP hơn

tĩnh

Thành viên

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 (biến hoặc hàm) thuộc về lớp, không thuộc về thể hiện. Nói cách khác, tất cả các phiên bản chia sẻ cùng một bản sao của một thành viên tĩnh

Ví dụ: hãy viết lại lớp MyCircle của chúng tôi để bao gồm một biến

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
20 để duy trì số vòng kết nối đã tạo, như thể hiện trong sơ đồ lớp sau. Lưu ý rằng các thành viên tĩnh được gạch chân trong ký hiệu UML

Khái niệm OOP trong PHP
MyCircleWithCount. php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
3
MyCircleWithCountTest. php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
4

Các kết quả đầu ra dự kiến ​​là

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5

Bạn có thể đếm mà không có

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 không?

Hằng số - const

Một biến thành viên không đổi được xác định bởi từ khóa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
22. Các hằng số luôn là
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
23 và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08, không thể sửa đổi nội dung của chúng. Không giống như các biến thông thường, các hằng số không bắt đầu bằng dấu $ ở đầu. Trong định nghĩa lớp, các hằng số có thể được tham chiếu qua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
25, giống như bất kỳ thành viên
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 nào. Bên ngoài định nghĩa lớp, chúng được tham chiếu qua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27. Theo quy ước, sử dụng chữ hoa cho tên hằng, e. g. ,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
28,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
29

Phương pháp ma thuật và hằng số

Các phương thức ma thuật là các phương thức đặc biệt, bắt đầu bằng dấu gạch dưới kép, có thể được định nghĩa trong bất kỳ lớp nào và được thực thi thông qua chức năng PHP tích hợp. Ví dụ như,

  • $ php MyCircleTest.php
    2. người xây dựng
  • $ php MyCircleTest.php
    5. kẻ hủy diệt
  • 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
    6. trả về một chuỗi đại diện của đối tượng này. Được gọi ngầm nếu một chuỗi được mong đợi
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    63. để nhân bản một bản sao
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    64 và
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    65. để tuần tự hóa
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    66,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    67,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    68 và
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    69. Được gọi khi cố gắng truy cập một biến thành viên không khả dụng.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    66 được kích hoạt bởi
    $ php MyCircleTest.php
    6;
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    34 và
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    35. Được gọi khi cố gắng gọi một hàm (hoặc hàm tĩnh) không khả dụng
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    36. thông qua
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    37
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    38

[TODO] Ví dụ

Hằng ma thuật (

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
23 và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08), được đặt tên bằng chữ hoa và bắt đầu và kết thúc bằng hai dấu gạch dưới (không có $ ở đầu), chứa các thuộc tính chỉ đọc đặc biệt. Ví dụ như,

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    04. tên lớp hiện tại trong chuỗi
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    42. tên tệp hiện tại
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    43. số dòng, được sử dụng cùng với
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    42
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    45. thư mục tuyệt đối, giống như
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    46
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    47 và
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    48. tên hàm hoặc phương thức
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    49. không gian tên hiện tại trong chuỗi

[TODO] Ví dụ

bản thân. , cha mẹ. và tĩnh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
50,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
51 và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
52 cho phép bạn truy cập các thành viên
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
22 (
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
23 và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08) TRONG định nghĩa lớp.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
50 đề cập đến lớp hiện tại, như được minh họa trong ví dụ trên.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
51 đề cập đến lớp cha và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
52 đề cập đến lớp hiện tại nhưng có ràng buộc muộn - sẽ được thảo luận sau trong phần kế thừa

Nhớ lại rằng bên ngoài định nghĩa lớp, bạn có thể truy cập thành viên

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 và
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
22 thông qua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
03

bản thân vs. $này

Sử dụng

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
1 để chỉ đối tượng hiện tại. Sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
05 để chỉ lớp hiện tại. Nói cách khác, trong một định nghĩa lớp, sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
06 để tham chiếu các thành viên không thuộc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08, sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 cho các thành viên
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08

Nhập gợi ý cho các tham số chức năng

Trong định nghĩa hàm, bạn có thể khai báo LOẠI của tham số, chẳng hạn như

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
10, tên lớp hoặc giao diện hoặc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
11. Tuy nhiên, gợi ý loại KHÔNG áp dụng cho các loại vô hướng, chẳng hạn như int hoặc string. Ví dụ,

Di sản

Thí dụ. Các lớp MyCircle và MyCylinder

Hãy minh họa kế thừa lớp cha-lớp con với ví dụ sau về lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5 và lớp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
13

Khái niệm OOP trong PHP
MyCircle. php

Giống như ví dụ trước

Xi lanh của tôi. php

Lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
13 kế thừa từ lớp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5, với nhiều biến/hàm thành viên hơn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0
MyCylinderTest. php

Lái thử cho hạng

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
13

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1

Các kết quả đầu ra dự kiến ​​là

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2

Kế thừa hoạt động như thế nào

mở rộng

Bạn có thể định nghĩa một lớp con kế thừa một lớp cha thông qua từ khóa ________ 017

bản thân và cha mẹ

Trong định nghĩa lớp con, bạn có thể sử dụng từ khóa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
18 ở dạng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
19 để chỉ một thành viên của lớp cha; .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
22 được gọi là toán tử phân giải phạm vi

Ghi đè phương thức

Lớp con có thể ghi đè phương thức kế thừa từ lớp cha bằng cách cung cấp định nghĩa riêng của nó. Ví dụ, lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
13 có thể override phương thức
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 kế thừa từ lớp cha
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5 như sau

cuối cùng

Không thể ghi đè biến/phương thức

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
26 trong lớp con

đa hình

phương thức trừu tượng và lớp trừu tượng

Phương thức

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27 là phương thức chỉ có chữ ký, không có triển khai. Một lớp chứa một hoặc nhiều phương thức
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27 là một lớp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27. Một lớp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27 không thể được khởi tạo, vì định nghĩa của nó không đầy đủ. Để sử dụng một lớp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27, hãy lấy một lớp con và ghi đè các phương thức của
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27. Lớp con hiện đã hoàn thành và có thể được khởi tạo

Ví dụ,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
3

giao diện

Một giao diện là một lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27 thuần túy, chỉ chứa các phương thức
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27. Một giao diện được xác định bằng từ khóa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
35 (thay vì
$ php MyCircleTest.php
1). Để lấy một lớp con từ một giao diện, hãy sử dụng từ khóa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
37 (thay vì
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
17)

Ví dụ như,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
4

Hãy lưu ý rằng việc triển khai lớp trừu tượng và giao diện của PHP hoàn toàn giống với Java

đặc điểm

Nhìn thấy

OOP hơn

đối tượng nhân bản

PHP cung cấp một từ khóa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
39 để sao chép một đối tượng, thực hiện sao chép bóng tối. Nếu phương thức ma thuật
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
63 được định nghĩa trong lớp, nó sẽ được chạy sau bản sao bóng tối

__autoload()

[LÀM]

không gian tên

Bạn có thể có hai phiên bản của lớp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
41 trong chương trình của mình không?

Một không gian tên (được gọi là gói trong Java) nhóm các lớp, giao diện, hàm và hằng có liên quan. Nó cố gắng

  • giải quyết xung đột đặt tên;
  • cung cấp bí danh cho tên dài

Những từ khóa này được sử dụng trong quản lý không gian tên

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    42
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    43
Xác định một không gian tên

Để xác định một không gian tên, hãy viết "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
44" làm câu lệnh ĐẦU TIÊN trong tệp PHP của bạn, đặt không gian tên "hiện tại". Ví dụ,

Bạn có thể xác định nhiều không gian tên trong một tệp. Nhưng đừng làm điều đó để thực hành tốt nhất

không gian toàn cầu

Bất kỳ thực thể nào được xác định trong không gian tên đều thuộc về không gian chung

không gian tên phụ

PHP hỗ trợ cái gọi là không gian tên phụ, với các tên được phân tách bằng dấu gạch chéo ngược, e. g. , "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
45". Hãy lưu ý rằng không có dấu gạch chéo ngược hàng đầu

Cách tốt nhất là giữ nguồn của bạn trong thư mục khớp với không gian tên. Ví dụ,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
45 sẽ được giữ trong Path/To/MyProject/ZBox/ModSec

Một lần nữa, hãy lưu ý rằng PHP sử dụng dấu gạch chéo ngược trong không gian tên

Các thực thể tham chiếu trong không gian tên

Để tham chiếu một thực thể trong một không gian tên, bạn có thể

  1. Sử dụng tên đủ điều kiện. e. g. ,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    47. Hãy lưu ý rằng nó bắt đầu bằng dấu gạch chéo ngược
  2. Sử dụng tên không đủ tiêu chuẩn. e. g. ,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    48. Điều này sẽ được giải quyết thành
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    49
  3. Sử dụng tên đủ điều kiện một phần. e. g. ,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    50 (không có dấu gạch chéo ngược ở đầu). Điều này sẽ được giải quyết thành
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    51. Tên đủ điều kiện một phần là lộn xộn và nên tránh

Để truy cập một thực thể trong một không gian tên khác bên ngoài không gian tên hiện tại, hãy sử dụng tên đủ điều kiện

Để truy cập một thực thể trong không gian chung bên ngoài không gian tên hiện tại, hãy đặt tiền tố cho thực thể bằng dấu gạch chéo ngược ở đầu. Ví dụ,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
52

[TODO] Ví dụ

Hằng số ma thuật __NAMESPACE__

Hằng ma thuật

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
49 chứa tên của không gian tên hiện tại (trong chuỗi). Trong không gian chung,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
49 chứa một chuỗi rỗng

Nhập khẩu với "sử dụng. "

Bạn có thể gọi toán tử

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
55 để nhập một lớp, giao diện hoặc không gian tên. Khi một thực thể được nhập, bạn có thể truy cập thực thể đó bằng tên của thực thể đó, thay vì tên đủ điều kiện. (Điều này tương tự như câu lệnh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
56 trong Java; hoặc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
57 trong C#. ) PHP5. 6 cũng hỗ trợ nhập các hàm và hằng số. Ví dụ,

Bí danh với "sử dụng. như. "

Hơn nữa, bạn có thể xác định bí danh ở dạng "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
58". Ví dụ,

Chức năng/Hằng số quay trở lại Không gian toàn cầu

Một tên lớp không đủ tiêu chuẩn được phân giải thành không gian tên hiện tại. Để sử dụng một lớp bên ngoài không gian tên hiện tại, bạn cần sử dụng tên đủ điều kiện

Tên hàm và hằng số không đủ tiêu chuẩn được phân giải tương tự thành không gian tên hiện tại. Tuy nhiên, nếu không giải quyết được, hàm/hằng sẽ quay trở lại không gian chung

5 khái niệm OOP là gì?

Danh sách các khái niệm OOP trong Java .
Các đối tượng
Các lớp học
Sự vật
Lớp
trừu tượng
Di sản
đa hình
đóng gói

4 khái niệm của OOP là gì?

Các ý tưởng chính đằng sau Lập trình hướng đối tượng của Java, các khái niệm OOP bao gồm trừu tượng hóa, đóng gói, kế thừa và đa hình .

7 khái niệm của OOP là gì?

Trừu tượng hóa, đóng gói, đa hình và kế thừa là bốn nguyên tắc lý thuyết chính của lập trình hướng đối tượng. Nhưng Java cũng hoạt động với ba khái niệm OOP khác. hiệp hội, tập hợp, và thành phần.

PHP có hỗ trợ OOP không?

Bản thân ngôn ngữ PHP không hướng đối tượng. Ngôn ngữ Ruby là hướng đối tượng, Java cũng vậy, ngoại trừ các kiểu nguyên thủy. PHP là một ngôn ngữ lai có khả năng tạo đối tượng, Delphi cũng vậy. Có một sự khác biệt lớn về ngữ nghĩa giữa ngôn ngữ lai và ngôn ngữ hướng đối tượng