Tôi có nên sử dụng hàm tĩnh PHP không?

Ở đây, chúng tôi khai báo một phương thức tĩnh. hoan nghênh(). Sau đó, chúng ta gọi phương thức tĩnh bằng cách sử dụng tên lớp, dấu hai chấm (. ) và tên phương thức (không tạo phiên bản của lớp trước)



PHP - Tìm hiểu thêm về các phương thức tĩnh

Một lớp có thể có cả phương thức tĩnh và không tĩnh. Một phương thức tĩnh có thể được truy cập từ một phương thức trong cùng một lớp bằng cách sử dụng từ khóa self và dấu hai chấm (. )

Thí dụ

chào lớp {
chức năng tĩnh công khai chào mừng() {
tiếng vang "Xin chào thế giới. “;
}

hàm công khai __construct() {
bản thân. hoan nghênh();
}
}

lời chào mới();
?>

Tự mình thử »

Các phương thức tĩnh cũng có thể được gọi từ các phương thức trong các lớp khác. Để làm điều này, phương thức tĩnh phải là public

Thí dụ

chào lớp {
chức năng tĩnh công khai chào mừng() {
tiếng vang "Xin chào thế giới. “;
}
}

lớp SomeOtherClass {
thông báo chức năng công khai() {
Lời chào. hoan nghênh();
}
}
?>

Tự mình thử »

Để gọi một phương thức tĩnh từ một lớp con, hãy sử dụng từ khóa parent bên trong lớp con. Ở đây, phương thức tĩnh có thể là public hoặc protected

Từ khóa static được sử dụng để khai báo các thuộc tính và phương thức của một lớp là tĩnh. Các thuộc tính và phương thức tĩnh có thể được sử dụng mà không cần tạo một thể hiện của lớp

Từ khóa static cũng được sử dụng để khai báo các biến trong hàm giữ nguyên giá trị của chúng sau khi hàm kết thúc

Giới thiệu. Lớp tĩnh trong PHP là loại lớp chỉ được khởi tạo một lần trong chương trình. Nó phải chứa một thành viên tĩnh (biến) hoặc một hàm thành viên tĩnh (phương thức) hoặc cả hai. Các biến và phương thức được truy cập mà không cần tạo đối tượng, sử dụng toán tử phân giải phạm vi (. ). Nhưng đây là một nhược điểm, phương thức tĩnh không thể truy cập các biến không tĩnh vì điều đó sẽ yêu cầu tạo đối tượng trước. Vì vậy, để truy cập các biến của một lớp tĩnh, chúng ta phải khai báo chúng là tĩnh bằng cách sử dụng từ khóa static

ví dụ 1




class Class_name {

     

    // Static variable and static function

    

String is valid!
1

    

String is valid!
3
String is valid!
4
String is valid!
5
String is valid!
6_______0_______7
String is valid!
8

     

    

String is valid!
3
String is valid!
4
text
3
text
4

text
5
text
6
text
7
String is valid!
5_______0_______8

    

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
3

String is valid!
String is NOT valid!
4

String is valid!
String is NOT valid!
5

đầu ra.

text

ví dụ 2. Ví dụ này kiểm tra xem chuỗi được tạo có độ dài lớn hơn hoặc bằng 7 hay không




String is valid!
String is NOT valid!
3

class

String is valid!
String is NOT valid!
9

0

    2

    

String is valid!
3
String is valid!
4 6 7

String is valid!
String is NOT valid!
3

    class0

    

String is valid!
3
String is valid!
4
text
3 class5
String is valid!
5class7

    0

text
5Class_name {1

text
5Class_name {3

text
5Class_name {5Class_name {6Class_name {7Class_name {6
String is valid!
5     06class7

     3     4      5

text
5     7

     3     4     0

    

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
3

    5

    6

String is valid!
6    8
String is valid!
8

String is valid!
String is NOT valid!
3

// Static variable and static function1

// Static variable and static function2

Class_name {5// Static variable and static function4    6// Static variable and static function6

    

text
6 // Static variable and static function9
String is valid!
8

     7

    

text
6
String is valid!
04
String is valid!
8

     

String is valid!
String is NOT valid!
5

đầu ra.

String is valid!

Lớp khởi tạo (Không tĩnh)

Giới thiệu. Khởi tạo có nghĩa là tạo một thể hiện của một đối tượng trong bộ nhớ của máy chủ. Các lớp khởi tạo là những lớp yêu cầu một đối tượng được tạo trước khi các biến và phương thức của nó được gọi. Nó tương tự như một lớp bình thường được sử dụng trong C++, Java và các ngôn ngữ lập trình khác. Các lớp này có thể được khởi tạo nhiều lần và giữ các giá trị duy nhất cho từng đối tượng của nó

ví dụ 1




class

String is valid!
10

     

    

String is valid!
13

    

String is valid!
15

    

String is valid!
3
String is valid!
5
String is valid!
6
String is valid!
7
String is valid!
8

    

String is valid!
3
text
3
String is valid!
25

    0

text
5
text
6
String is valid!
30
String is valid!
31
String is valid!
32
String is valid!
8

    

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
3

String is valid!
38
String is valid!
6
String is valid!
40
String is valid!
41

String is valid!
38
String is valid!
43

String is valid!
String is NOT valid!
3

String is valid!
String is NOT valid!
5

đầu ra.

text

ví dụ 2. Chương trình này kiểm tra xem độ dài chuỗi được tạo có lớn hơn hoặc bằng 7 hay không




class

String is valid!
10

     

    

String is valid!
51

    

String is valid!
3 6 7

String is valid!
String is NOT valid!
3

    

String is valid!
58

    

String is valid!
3
text
3 class5
String is valid!
5class7

    0

text
5Class_name {5Class_name {6Class_name {7Class_name {6
String is valid!
5
String is valid!
73
String is valid!
30
String is valid!
75

     3     4      5

text
5     7

     3     4     0

    

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
1

String is valid!
String is NOT valid!
3

String is valid!
88

String is valid!
89
String is valid!
6_______0_______40
String is valid!
41

Class_name {5 Class_name {6

String is valid!
89
String is valid!
96    8// Static variable and static function6

    

text
6 // Static variable and static function9
String is valid!
8

     7

    

text
6
String is valid!
04
String is valid!
8

String is valid!
String is NOT valid!
3

text
09

text
10
String is valid!
6
String is valid!
40
String is valid!
41

Class_name {5 Class_name {6

text
10
String is valid!
96
text
18// Static variable and static function6

    

text
6 // Static variable and static function9
String is valid!
8

     7

    

text
6
String is valid!
04
String is valid!
8

     

String is valid!
String is NOT valid!
5

đầu ra.

String is valid!
String is NOT valid!

Lớp tĩnh so với Lớp khởi tạo

  • Lớp tĩnh được sử dụng cho một thể hiện của lớp đó trong khi lớp khởi tạo được sử dụng khi cần nhiều hơn một thể hiện
  • Lớp tĩnh chứa các biến tĩnh và phương thức tĩnh trong khi lớp khởi tạo chứa các biến không tĩnh và phương thức không tĩnh
  • Các chương trình có các lớp tĩnh khó kiểm tra và mở rộng trong khi các chương trình có các lớp không tĩnh cung cấp thuộc tính mở rộng và kiểm tra dễ dàng
  • Dữ liệu chủ yếu liên quan đến chính lớp đó trong trường hợp lớp tĩnh trong khi trong trường hợp lớp được khởi tạo, dữ liệu liên quan đến đối tượng tương ứng, không phải chính lớp đó
  • Khi nào thì dùng cái gì?
    Cân nhắc sử dụng lớp Tĩnh nếu bất kỳ câu nào trong số này áp dụng cho tình huống

    • Chức năng của các phương thức và biến của một lớp là chung (toàn cục)
    • Khi bạn muốn một trường hoặc biến tương ứng có cùng thể hiện chéo giá trị hoặc khi bạn muốn một thể hiện duy nhất của lớp đó
    • Khi tạo một singleton (loại lớp cụ thể chỉ có thể được khởi tạo một lần. ) hoặc một lớp tiện ích (trợ giúp)
    • Khi mỗi đối tượng có cùng một dữ liệu và yêu cầu tạo một lớp chỉ hoạt động trên dữ liệu này, thì có thể sử dụng lớp tĩnh
    • Kiểm tra (chủ yếu là đơn vị) hoặc khả năng bảo trì là không cần thiết

    Cân nhắc sử dụng lớp Khởi tạo nếu bất kỳ câu lệnh nào trong số này áp dụng cho tình huống

    • Chức năng của lớp không phải là toàn cục hoặc có thể có nhiều hơn một thể hiện của lớp đó
    • Khi mỗi đối tượng của lớp có dữ liệu duy nhất của riêng mình (như ID email)
    • Yêu cầu kiểm tra và bảo trì

    Thí dụ. Xem xét trong trường hợp của một cửa hàng, các hóa đơn được tạo cho các mặt hàng mua chứa tên mặt hàng, chi phí của từng mặt hàng, tổng chi phí, ngày, tên cửa hàng, số cửa hàng đã đăng ký. , địa chỉ, v.v. Tại đây, đối với những khách hàng khác nhau mua các mặt hàng khác nhau, giá trị của tên mặt hàng, tổng chi phí, ngày, v.v. sẽ khác nhau. Vì vậy, những thứ này có thể thu được bằng cách sử dụng lớp khởi tạo trong đó mỗi khách hàng được biểu diễn dưới dạng một đối tượng của lớp đó và mỗi đối tượng sẽ có các thuộc tính khác nhau. Nhưng tên của cửa hàng, đăng ký cửa hàng không. , chi phí của mặt hàng và địa chỉ tương ứng sẽ giống nhau cho tất cả các khách hàng. Vì vậy, ở đây lớp tĩnh có thể được sử dụng để khởi tạo tất cả các giá trị này một lần và sau đó chúng có thể được sử dụng nhiều lần

    Tại sao chúng ta sử dụng hàm tĩnh trong PHP?

    Từ khóa tĩnh được sử dụng để khai báo các thuộc tính và phương thức của một lớp là tĩnh . Các thuộc tính và phương thức tĩnh có thể được sử dụng mà không cần tạo một thể hiện của lớp. Từ khóa tĩnh cũng được sử dụng để khai báo các biến trong hàm giữ nguyên giá trị của chúng sau khi hàm kết thúc.

    Khi nào tôi nên sử dụng các chức năng tĩnh?

    Các phương thức tĩnh thường được ưu tiên khi. .
    Tất cả các phương thức cá thể phải chia sẻ một đoạn mã cụ thể (mặc dù bạn vẫn có thể có một phương pháp cá thể cho điều đó)
    Bạn muốn gọi phương thức mà không phải tạo một thể hiện của lớp đó
    Bạn phải đảm bảo rằng lớp tiện ích không bao giờ bị thay đổi

    Khi nào sử dụng lớp tĩnh PHP?

    Lớp tĩnh được sử dụng cho một phiên bản duy nhất của lớp đó trong khi lớp khởi tạo được sử dụng khi cần nhiều hơn một phiên bản. Lớp tĩnh chứa các biến tĩnh và phương thức tĩnh trong khi lớp khởi tạo chứa các biến không tĩnh và phương thức không tĩnh.

    Tại sao không sử dụng các phương thức tĩnh?

    Các phương thức tĩnh không tốt cho khả năng kiểm tra . Vì các phương thức tĩnh thuộc về lớp và không phải là một thể hiện cụ thể, nên việc chế nhạo chúng trở nên khó khăn và nguy hiểm. Ghi đè một phương thức tĩnh không đơn giản đối với một số ngôn ngữ.