Mục đích của phương thức tĩnh trong php là gì?

Một trong những điều thường khiến những người mới làm quen với PHP hướng đối tượng bối rối là cái được gọi là “phương thức tĩnh PHP” và “thuộc tính tĩnh”. Chúng thường gây nhầm lẫn, vì đơn giản là bạn không quen với cú pháp, đó là dấu hai chấm PHP (

function_name($args);
5) nơi bạn có thể mong đợi một mũi tên (
function_name($args);
6). Nhưng, tôi đang vượt lên chính mình

Mục tiêu của chúng tôi ở đây là giải thích đầy đủ các phương thức và thuộc tính tĩnh PHP là gì và khi nào bạn nên sử dụng chúng. Bạn có thể sử dụng chúng trong WordPress. Đôi khi bạn có thể thấy các phương thức tĩnh được sử dụng trong WordPress. Chúng ta sẽ nói về những ưu điểm và nhược điểm của điều đó, sau đó chuyển hướng ngắn sang khung PHP phổ biến có tên là Laravel, vì nó bổ sung thêm một điểm cuối cùng cho toàn bộ câu chuyện. Hãy tìm hiểu xem các phương thức tĩnh PHP là gì và cách chúng hoạt động trong WordPress

Lớp tĩnh PHP là gì?

Hóa ra “lớp tĩnh” không thực sự là một thứ trong PHP. Về mặt kỹ thuật, một lớp không bao giờ được đánh dấu là tĩnh. Thay vào đó, các phương thức và thuộc tính trên một lớp PHP có thể được đánh dấu là tĩnh. Nhưng một lần nữa, tôi đang đi trước bạn. Trước tiên, hãy đảm bảo rằng tất cả chúng ta đều ở trên cùng một trang về OOPHP, thuộc tính và phương thức

Tóm tắt nhanh về PHP OOP (+ Ví dụ)

Nói tóm lại, OOP (PHP hướng đối tượng) là một mô hình lập trình phát triển theo cách mà con người vốn hiểu thế giới thông qua các đối tượng. Khi tôi nhìn quanh phòng, tôi thấy rằng tôi đang ngồi trên một chiếc “ghế”, không phải là một mớ hỗn độn của hành vi và tài sản

Điều đó nói rằng, khi chúng tôi áp dụng “tư duy đối tượng” này vào lập trình, chúng tôi vẫn hiểu và nhìn thấy các khối. Đây là nơi mà hầu hết mọi người đã quen với việc hiểu các phương thức và thuộc tính PHP. Tóm lại, các phương thức và thuộc tính là các hàm và biến được lưu trữ trên các đối tượng cụ thể. Một lần nữa, nếu đây hoàn toàn là điều mới mẻ đối với bạn, có thể hãy đọc hướng dẫn của chúng tôi về cách hiểu PHP OOP cơ bản trước khi tiếp tục. Đây là cái tốt nhất chúng tôi có. w

https. //wpshout. com/Complete-guide-to-Object-Oriented-php/

Phương thức tĩnh trong PHP là gì?

Chúng ta thực sự có thể gọi một phương thức tĩnh mà không cần tạo một đối tượng

Một phương thức trong PHP được coi là tĩnh khi khai báo của nó có keywork theo nghĩa đen là

function_name($args);
7

Một phương thức tĩnh trông như sau

class Dog {
    // Here are non-static properties and methods
    public $color;
    private $volume;

    public function bark() {
        text_to_speech("arf", $this->volume);
    }

    // Here's the static method
    public static function areDogsGood() {
        // Yes, dogs are good
        return true;
    }
}

// Static methods can be called without creating an object!
$areGood = Dog::areDogsGood(); // $areGood is true

Bây giờ, điều đó có nghĩa là gì

function_name($args);
7? . Vì vậy, chúng ta thực sự có thể gọi một phương thức tĩnh mà không cần tạo một đối tượng. Điều này vừa thực sự mạnh mẽ vừa thực sự kỳ lạ

Chúng tôi hiểu các lớp PHP thường khai báo kế hoạch chi tiết cho các đối tượng. Sau đó, đối tượng của chúng tôi được tạo khi có một cuộc gọi đến

function_name($args);
9 hoặc chúng được
function_name($args);
0ed. Với các phương thức tĩnh của PHP, bạn thực sự đang làm điều gì đó khác biệt

Thay vào đó, bạn đang tạo ra một hàm (hoặc phương thức) về cơ bản mà bạn có thể gọi hoặc truy cập từ bất cứ đâu về mặt chức năng. Trên danh nghĩa, chúng nằm trên “đối tượng” hoặc “lớp”, nhưng lớp đó chỉ phục vụ ít hơn một “không gian tên” hoặc “vùng chứa” cho hàm mà bạn đang khai báo

Thuộc tính tĩnh PHP là gì?

Các thuộc tính thường dành riêng cho từng phiên bản của đối tượng PHP. Nhưng các thuộc tính tĩnh lại khác. Điều này là do các thuộc tính tĩnh không thực sự có trên các thể hiện của các đối tượng, mà thay vào đó ít nhiều tồn tại trên

function_name($args);
1

Như vậy, việc sử dụng các thuộc tính tĩnh thường không được khuyến khích. Có một số ít trường hợp chúng có ý nghĩa, nhưng thực hiện những việc như lưu trữ các thuộc tính đối tượng–như màu sắc hoặc kích thước của một con chó–trên một thuộc tính tĩnh không hoạt động theo cách bạn mong đợi

Cách một thuộc tính tĩnh của lớp

function_name($args);
2 sẽ hoạt động là nó áp dụng cho tất cả thành viên của lớp
function_name($args);
2, bao gồm cả các trường hợp khác. Vì vậy, nếu bạn đặt một thuộc tính tĩnh trên
function_name($args);
4, một phiên bản của
function_name($args);
2 thành 'nâu', thì tất cả những con chó khác cũng sẽ ngay lập tức trở thành 'nâu'. Đây là lý do tại sao việc sử dụng các thuộc tính tĩnh thường không được khuyến khích

Cách gọi các phương thức tĩnh trong PHP từ bên ngoài

Như đã đề cập, các phương thức tĩnh là các hàm xấp xỉ hơn trong không gian tên PHP toàn cầu so với các phương thức đối tượng. Vì vậy, bạn gọi chúng tương tự. Đây là nơi cú pháp dấu hai chấm PHP xuất hiện. Để gọi một chức năng, có lẽ bạn đã từng thấy

function_name($args);

Tương tự, để gọi một phương thức tĩnh, tôi sẽ gọi

________số 8

Trong trường hợp (giả sử đăng ký hành động WordPress) mà bạn thường gọi một hàm có chuỗi khớp với tên của nó, việc chuyển vào một chuỗi có dấu hai chấm sẽ hoạt động tốt. Tức là 2 dòng này giống nhau

add_action( 'wp_head', 'function_name' );
add_action( 'wp_head', 'StaticClass::method_name' );

Tuy nhiên, một trong những cách mà các phương thức tĩnh khác với các hàm toàn cầu là cú pháp có thể gọi mảng của PHP cũng được sử dụng cho chúng. Vì vậy, ba cuộc gọi này cũng tương đương khi có liên quan đến thời gian chạy PHP

function_name($args);
0

Mỗi trong số này làm việc cho PHP. Gọi các phương thức tĩnh bằng cách chỉ cần chuyển tên trên chúng, vào mảng hoặc bằng dấu hai chấm. Cả hai đều hoạt động tốt cho các phương thức tĩnh

(Dành cho những ai chưa biết, cú pháp mảng ngắn

function_name($args);
6 đã được giới thiệu với PHP trong 5. 4. Tôi thích nó hơn, nhưng để tương thích hoàn toàn với hệ sinh thái WordPress, bạn có thể không sử dụng được. )

Cách tham khảo các thuộc tính và phương thức tĩnh từ bên trong một lớp PHP

Nếu bạn đã thực hiện nhiều PHP OOP, có lẽ bạn đã khá quen thuộc với

function_name($args);
7. Bên trong một lớp PHP, bạn có thể truy cập các thuộc tính hoặc phương thức trên cùng một lớp bằng cách sử dụng từ khóa
function_name($args);
8. Bạn có thể muốn truy cập các thuộc tính và phương thức tĩnh giống nhau. Bạn không thể

Chủ yếu là trong nỗ lực làm rõ hơn cho người đọc những điểm khác biệt mà tôi đã nêu ở trên về các hành vi khác nhau của các phương thức và thuộc tính tĩnh, bạn sẽ đề cập đến chúng trong nội bộ bằng cách sử dụng tên lớp

function_name($args);
9,
StaticClass::method_name($args);
0, (hoặc nếu bạn ở tuổi 5. 3 trở lên
function_name($args);
7) từ khóa. Vì vậy, thay vì
StaticClass::method_name($args);
2, bạn sẽ gọi
StaticClass::method_name($args);
3. Và thay vì
StaticClass::method_name($args);
4 bạn sẽ gọi
StaticClass::method_name($args);
5. (Thực tế mà nói,
StaticClass::method_name($args);
6 và
StaticClass::method_name($args);
7 sẽ hành xử giống hệt nhau hầu như mọi lúc. Giả sử lớp của bạn có tên là
function_name($args);
9. 😝) Một lần nữa, sự lựa chọn có vẻ kỳ lạ này có ý nghĩa khi chúng ta nhớ rằng

  1. Các phương thức và thuộc tính tĩnh hoạt động rất khác so với các phương thức thay thế đối tượng dựa trên cá thể của chúng
  2. PHP muốn chắc chắn rằng bạn nhận ra rằng
    function_name($args);
    
    7 mọi thứ hoạt động khác đi

Nói chung, bạn nên hiểu rằng

StaticClass::method_name($args);
0 trong PHP đề cập đến một
function_name($args);
1, trong đó
function_name($args);
7 đề cập đến phiên bản hiện tại. Vì các thuộc tính thể hiện nằm trên đối tượng (không phải lớp, nơi chúng chỉ nhận được chúng từ đó), bạn gọi chúng bằng
function_name($args);
7. Vì các thuộc tính tĩnh có trên
function_name($args);
1, bạn phải truy cập và tham khảo chúng bằng cách sử dụng
StaticClass::method_name($args);
0

Như đã đề cập ngắn gọn, PHP 5. 2 (mà bạn vẫn có thể cần hỗ trợ trong WordPress) không có tham chiếu lớp

function_name($args);
7, vì vậy bạn sẽ thấy
StaticClass::method_name($args);
0 thường xuyên nhất. Có một số sắc thái về sự khác biệt giữa
StaticClass::method_name($args);
0 và
function_name($args);
7, nhưng vì tôi sắp nói với bạn rằng đừng sử dụng nhiều, nên tôi sẽ không giải thích. PHP. tài liệu mạng giải thích ràng buộc tĩnh muộn khá tốt

Khi nào nên sử dụng các phương thức tĩnh trong PHP

Nói chung, bạn sẽ thấy rằng các phương thức (và thuộc tính) tĩnh của PHP không được khuyến khích. Có một số ít trường hợp sử dụng mà tôi nghĩ rằng chúng hợp lý để sử dụng, vì vậy hãy đề cập đến trường hợp đó trước

Trường hợp có lợi cho các phương thức và thuộc tính tĩnh PHP

Mục đích của phương thức tĩnh trong php là gì?
Lý do sử dụng các thuộc tính và phương thức tĩnh PHP là một cái gì đó thực sự tĩnh. “Static”, nếu bạn chưa biết, thường được dùng trong tiếng Anh với nghĩa là “không thay đổi”. ” Đôi khi, các đối tượng trong một hệ thống sẽ thực sự tĩnh theo cách này

Một ví dụ tôi trích dẫn rất nhiều là công cụ chuyển đổi đơn vị. Nếu bạn có một ứng dụng mà bạn thường cần chuyển đổi, chẳng hạn như inch sang feet hoặc centimet, sẽ rất hợp lý khi thực hiện điều đó với một đối tượng tĩnh trong PHP. Theo cách đó, việc gọi các phương thức sẽ không cần ______39ing một đối tượng, dù sao thì một quá trình hầu như chỉ có ý nghĩa về mặt khái niệm

Thay vào đó, bạn chỉ cần gọi hàm như, chẳng hạn như,

function_name($args);
01 và nhận được câu trả lời của mình. (Xin nhắc lại, chức năng của dấu hai chấm đó trong PHP đang gọi phương thức trên lớp tĩnh. ) Nó nhanh hơn và ngắn gọn hơn một chút

Và các yếu tố quy mô liên quan—từ feet đến inch, inch đến centimet, v.v.–cũng không đổi theo thời gian và địa điểm. Vì vậy, bạn sẽ không thực sự có ý định rằng chúng thay đổi, trừ khi bạn muốn tất cả các chuyển đổi của mình ở mọi nơi thay đổi đồng bộ. Vì vậy, có thể hợp lý khi định nghĩa

function_name($args);
02 đó, và sau đó gọi nó trong lớp của chúng ta là
function_name($args);
03

Tại sao mọi người không thích các phương thức tĩnh

Mục đích của phương thức tĩnh trong php là gì?
Mục đích của phương thức tĩnh trong php là gì?
Nói chung, cộng đồng PHP (và hầu hết các lập trình viên) chỉ trích mạnh mẽ việc sử dụng các phương thức và thuộc tính tĩnh. lý do chính. chúng là cái mà mọi người gọi là “nhà nước toàn cầu. ” Mặc dù ý nghĩa đầy đủ của thuật ngữ đó quá lớn đối với bài viết cụ thể này, nhưng ý tưởng cốt lõi là chúng là những thứ mà mọi thứ trong hệ thống có thể sử dụng và có thể sử dụng, vì vậy thật khó để kiểm soát những gì đang xảy ra

Khi bạn

function_name($args);
9 một đối tượng và tạo một “thực thể” thực sự của nó, bạn giữ các phương thức và thuộc tính được bản địa hóa. Các phương thức và thuộc tính của
function_name($args);
7 có thể gây ra “hành động ma quái từ xa”, trong đó những thay đổi ở một nơi ảnh hưởng đến những nơi khác mà không có ý nghĩa rõ ràng về lý do hoặc cách thức khả dụng. Lập trình và lập trình viên phần lớn được kích hoạt bởi sự chắc chắn, vì vậy họ không thích điều này. Ngoài ra, lịch sử và kinh nghiệm thường dẫn mọi người đến quan điểm rằng trạng thái toàn cầu thường vượt khỏi tầm kiểm soát khi một ứng dụng cũ hơn và được sử dụng đa dạng hơn

Có một số ít trường hợp mà tôi nghĩ rằng các phương pháp tĩnh có ý nghĩa. Nhưng nói chung, bạn sẽ thích PHP hướng đối tượng hơn nếu bạn bám sát vào biểu mẫu dựa trên cá thể/đối tượng và bỏ lỡ các số liệu thống kê

Laravel trông giống như các phương thức tĩnh…

Mục đích của phương thức tĩnh trong php là gì?
Mục đích của phương thức tĩnh trong php là gì?
Một vấn đề cần đề cập ngắn gọn là dấu hai chấm trong PHP (
function_name($args);
5) được sử dụng trong khung MVC phổ biến có tên là Laravel. Đây là nguồn gốc của sự nhầm lẫn, đánh nhau trên internet và gây khó chịu trong nhiều năm. Chủ yếu là cuộc chiến đã lắng xuống (hoặc tôi ít chú ý đến nó hơn), nhưng đối với những người lần đầu tiên nhìn thấy mã Laravel, cách nó trông giống như nó liên quan đến nhiều phương thức tĩnh thường có thể gây ra cảnh báo. (Vì những lý do đã đề cập trong phần trước. )

Điều đang thực sự xảy ra trong Laravel là “phương thức bị thiếu” được gọi khi một thể hiện của đối tượng trông giống như nó được gọi tĩnh trong khung. Vì vậy, thực tế không phải đây là "các cuộc gọi phương thức tĩnh", mặc dù nhìn lướt qua mã trông giống hệt như vậy. Vì vậy, bạn sẽ thấy

function_name($args);
07, trông giống như một cuộc gọi tĩnh. Nhưng thực ra Laravel đang gọi một phương thức đối tượng để lấy tất cả người dùng từ cơ sở dữ liệu

Đây là một ví dụ về ma thuật khung. Ma thuật khung là một chủ đề mà tôi (và nhiều người khác) có ý kiến ​​​​mạnh mẽ và đầy cảm xúc về. Vì vậy, tôi sẽ tha thứ cho bạn, và chỉ giữ thông tin này. Khung công tác PHP của Laravel có những thứ (mà họ gọi là “mặt tiền”) trông giống như các lời gọi tĩnh đến các phương thức PHP. Họ không phải. Chúng tôi sẽ để nó ngay tại đó

Ra khỏi đó & (Có thể) Sử dụng các phương thức tĩnh PHP

Điều rất quan trọng là bạn phải hiểu các phương thức tĩnh PHP để có thể làm việc hiệu quả với tư cách là một nhà phát triển PHP. Cho dù bạn đang làm điều đó trong Laravel, WordPress hay một số khung web PHP khác, bạn sẽ gặp chúng và thật hữu ích khi hiểu cái quái gì đang xảy ra

Điều đó nói rằng, tôi thực sự không khuyên bạn nên sử dụng các phương thức tĩnh trong PHP. Và tôi chắc chắn không khuyên bạn sử dụng các thuộc tính tĩnh, trừ khi bạn hoàn toàn chắc chắn rằng mình hiểu và muốn hành vi khá khó hiểu của chúng. Chỉ cần biết rằng dấu hai chấm trong PHP (

function_name($args);
5) hầu như luôn luôn (ngoại trừ trong Laravel 🙃) để truy cập các thuộc tính và phương thức tĩnh trong PHP, và bạn sẽ làm tốt. Chúc may mắn và hack vui vẻ

Mục đích của các phương thức tĩnh là gì?

Một phương thức tĩnh có hai mục đích chính. Dành cho các phương thức tiện ích hoặc trợ giúp không yêu cầu bất kỳ trạng thái đối tượng nào . Vì không cần truy cập các biến thể hiện, nên việc có các phương thức tĩnh sẽ loại bỏ nhu cầu người gọi khởi tạo đối tượng chỉ để gọi phương thức.

Mục đích của các phương thức và biến tĩnh là gì?

Trong Java, từ khóa tĩnh được sử dụng chủ yếu cho quản lý bộ nhớ . Nó có thể được sử dụng với các biến, phương thức, khối và các lớp lồng nhau. Nó là một từ khóa được sử dụng để chia sẻ cùng một biến hoặc phương thức của một lớp nhất định. Về cơ bản, tĩnh được sử dụng cho một biến không đổi hoặc một phương thức giống nhau cho mọi phiên bản của một lớp.

Mục đích của lớp tĩnh là gì?

Trong Java, từ khóa tĩnh chủ yếu được sử dụng để quản lý bộ nhớ. Chúng ta có thể sử dụng từ khóa tĩnh với các biến, phương thức, khối và lớp. Sử dụng lớp tĩnh là một cách để nhóm các lớp lại với nhau. Nó cũng được sử dụng để truy cập thành viên nguyên thủy của lớp kèm theo thông qua tham chiếu đối tượng

Phương thức tĩnh trong PHP với ví dụ là gì?

Giải thích ví dụ . chào mừng() . 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).