Hướng dẫn can we create static class in php? - chúng ta có thể tạo lớp tĩnh trong php không?

Tôi thường thích viết các lớp không tĩnh thông thường và sử dụng lớp nhà máy để khởi tạo các trường hợp đơn (SUDO Static) của đối tượng.

Theo cách này, hàm tạo và phá hủy hoạt động theo bình thường và tôi có thể tạo thêm các phiên bản không tĩnh nếu tôi muốn (ví dụ: kết nối DB thứ hai)

Tôi sử dụng điều này mọi lúc và đặc biệt hữu ích cho việc tạo trình xử lý phiên lưu trữ DB tùy chỉnh, vì khi trang chấm dứt bộ hủy sẽ đẩy phiên đến cơ sở dữ liệu.

Một lợi thế khác là bạn có thể bỏ qua thứ tự bạn gọi là mọi thứ vì mọi thứ sẽ được thiết lập theo yêu cầu.

class Factory {
    static function &getDB ($construct_params = null)
    {
        static $instance;
        if( ! is_object($instance) )
        {
            include_once("clsDB.php");
            $instance = new clsDB($construct_params);   // constructor will be called
        }
        return $instance;
    }
}

Lớp DB ...

class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}

Bất cứ nơi nào bạn muốn sử dụng nó chỉ cần gọi ...

$static_instance = &Factory::getDB($somekickoff);

Sau đó, chỉ coi tất cả các phương pháp là không tĩnh (vì chúng)

echo $static_instance->getvar();

class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
09
class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
5
class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
11
class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
7

class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
1
echo $static_instance->getvar();
3
class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
19
class clsDB {

    $regular_public_variables = "whatever";

    function __construct($construct_params) {...}
    function __destruct() {...}

    function getvar() { return $this->regular_public_variables; }
}
7

Chúng ta có thể tạo lớp tĩnh không?

  • Các lớp học có thể là tĩnh mà hầu hết các nhà phát triển đều biết, từ đó một số lớp có thể được thực hiện tĩnh trong Java. Java hỗ trợ các biến thể hiện tĩnh, phương thức tĩnh, khối tĩnh và các lớp tĩnh. Lớp trong đó lớp lồng nhau được xác định được gọi là lớp bên ngoài.
  • Tại sao tĩnh được sử dụng trong PHP?
  • class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    09
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    5
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    11
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    echo $static_instance->getvar();
    
    3
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    19
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    Chúng ta có thể tạo lớp tĩnh không?

    Các lớp học có thể là tĩnh mà hầu hết các nhà phát triển đều biết, từ đó một số lớp có thể được thực hiện tĩnh trong Java. Java hỗ trợ các biến thể hiện tĩnh, phương thức tĩnh, khối tĩnh và các lớp tĩnh. Lớp trong đó lớp lồng nhau được xác định được gọi là lớp bên ngoài.Static Classes brings forth a property wherein a class itself holds values that remain the same and aren’t unique. Another property of Static Classes is that we can do the aforementioned without having to create an instance of the class.

    Làm thế nào để tạo một lớp tĩnh? & NBSP; Nó khá đơn giản. Các biến và phương thức được khai báo và xác định trong một lớp sẽ được khai báo là tĩnh với việc sử dụng từ khóa tĩnh, để chúng có thể được sử dụng mà không cần khởi tạo lớp trước. & NBSP; Một điểm quan trọng cần lưu ý ở đây là, vì điều này Có nghĩa là một biến lớp có thể được truy cập mà không cần một trường hợp cụ thể, điều đó cũng có nghĩa là sẽ chỉ có một phiên bản của biến này. Một hậu quả khác là một phương pháp tĩnh không thể truy cập các biến và phương thức không tĩnh vì chúng yêu cầu một thể hiện của lớp. 
    It’s fairly simple. The variables and methods that are declared and defined within a class are to be declared as static with the use of static keyword, so that they can be used without instantiating the class first. 
    An important point to note here is that, since this means a class variable can be accessed without a specific instance, it also means that there will only be one version of this variable. Another consequence is that a static method cannot access non-static variables and methods since these require an instance of the class.

    Để truy cập lớp tĩnh và phương thức của nó, sử dụng cú pháp sau: & nbsp; & nbsp;

     ClassName::MethodName();

    Ví dụ 1: Mã sau trả về ngày hiện tại mà không cần khởi tạo ngày lớp. Trong trường hợp này, định dạng của ngày chứ không phải ngày thực tế vẫn giữ nguyên. The following code returns the current date without instantiating the class Date. In this case, the format of the date and not the actual date remains the same.

    PHP

    class Date

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    0

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    4
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    5
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    6
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    $static_instance = &Factory::getDB($somekickoff);
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    5
    $static_instance = &Factory::getDB($somekickoff);
    
    3
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    $static_instance = &Factory::getDB($somekickoff);
    
    8
    $static_instance = &Factory::getDB($somekickoff);
    
    9
    echo $static_instance->getvar();
    
    0
    echo $static_instance->getvar();
    
    1

    echo $static_instance->getvar();
    
    2
    echo $static_instance->getvar();
    
    3
    echo $static_instance->getvar();
    
    4
    echo $static_instance->getvar();
    
    5
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    4
    echo $static_instance->getvar();
    
    7
    echo $static_instance->getvar();
    
    0
    echo $static_instance->getvar();
    
    9
     ClassName::MethodName();
    0
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    echo $static_instance->getvar();
    
    2
    echo $static_instance->getvar();
    
    3
    echo $static_instance->getvar();
    
    4
    echo $static_instance->getvar();
    
    5
    $static_instance = &Factory::getDB($somekickoff);
    
    1
    echo $static_instance->getvar();
    
    7
    echo $static_instance->getvar();
    
    0
     ClassName::MethodName();
    9

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    1

    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    1

    echo $static_instance->getvar();
    
    3 Date
    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    5

    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    6

    Output:
    April 30th, 2020
    2020/04/30 10:48:36

    Ví dụ 2: Mã sau kiểm tra xem chuỗi có hợp lệ hay không. Nó có giá trị nếu độ dài của nó bằng 13. & nbsp; The following code checks whether the string is valid or not. It is valid if it’s length is equal to 13. 

    PHP

    class Date

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    0

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    4
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    5
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    6
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    $static_instance = &Factory::getDB($somekickoff);
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    5
    $static_instance = &Factory::getDB($somekickoff);
    
    3
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    $static_instance = &Factory::getDB($somekickoff);
    
    8
    $static_instance = &Factory::getDB($somekickoff);
    
    9
    echo $static_instance->getvar();
    
    0
    echo $static_instance->getvar();
    
    1

    echo $static_instance->getvar();
    
    2
    echo $static_instance->getvar();
    
    3
    echo $static_instance->getvar();
    
    4
    echo $static_instance->getvar();
    
    5
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    4
    echo $static_instance->getvar();
    
    7
    echo $static_instance->getvar();
    
    0
    echo $static_instance->getvar();
    
    9
     ClassName::MethodName();
    0
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    7

    echo $static_instance->getvar();
    
    2class5

    echo $static_instance->getvar();
    
    2
    echo $static_instance->getvar();
    
    3
    echo $static_instance->getvar();
    
    4
    echo $static_instance->getvar();
    
    5
    $static_instance = &Factory::getDB($somekickoff);
    
    1
    echo $static_instance->getvar();
    
    7
    echo $static_instance->getvar();
    
    0
     ClassName::MethodName();
    9

    echo $static_instance->getvar();
    
    3 Date
    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    5

    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    1

    Ví dụ 2: Mã sau kiểm tra xem chuỗi có hợp lệ hay không. Nó có giá trị nếu độ dài của nó bằng 13. & nbsp;

    3Date7Date2Date9

    class

    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    9

    class5

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    String is valid!
    String is NOT valid!
    3
    String is valid!
    String is NOT valid!
    4

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    $static_instance = &Factory::getDB($somekickoff);
    
    8
    String is valid!
    String is NOT valid!
    90
    echo $static_instance->getvar();
    
    1

    3Date7

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    09Date9

    Các

    class5

    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    1
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    2
    class clsDB {
    
        $regular_public_variables = "whatever";
    
        function __construct($construct_params) {...}
        function __destruct() {...}
    
        function getvar() { return $this->regular_public_variables; }
    }
    
    3
    String is valid!
    String is NOT valid!
    3
    String is valid!
    String is NOT valid!
    4

    Output:
    April 30th, 2020
    2020/04/30 10:48:36
    6

    Output:  

    String is valid!
    String is NOT valid!

    Chúng ta có thể tạo lớp tĩnh không?

    Các lớp học có thể là tĩnh mà hầu hết các nhà phát triển đều biết, từ đó một số lớp có thể được thực hiện tĩnh trong Java. Java hỗ trợ các biến thể hiện tĩnh, phương thức tĩnh, khối tĩnh và các lớp tĩnh. Lớp trong đó lớp lồng nhau được xác định được gọi là lớp bên ngoài.some classes can be made static in Java. Java supports Static Instance Variables, Static Methods, Static Block, and Static Classes. The class in which the nested class is defined is known as the Outer Class.

    Tại sao tĩnh được sử dụng 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 tạo ra 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 một hàm giữ giá trị của chúng sau khi hàm kết thúc.to declare properties and methods of a class as static. Static properties and methods can be used without creating an instance of the class. The static keyword is also used to declare variables in a function which keep their value after the function has ended.

    Tại sao không sử dụng Phương pháp tĩnh PHP?

    Sử dụng các phương thức tĩnh và biến phá vỡ rất nhiều nguồn có sẵn cho mã hướng đối tượng.Việc thực hiện kỹ thuật của chúng là cho phép trạng thái được duy trì trên tất cả các trường hợp của một lớp.breaks a lot of the power available to Object-Oriented code. The technical implementation of them is to allow state to be maintained across all instances of a class.

    Lớp trừu tượng có thể có phương pháp tĩnh trong PHP không?

    Y () hàm đó x () đang cố gắng gọi là lớp cha y (), bản thân nó là một hàm trừu tượng.Vì vậy, sử dụng trừu tượng và tĩnh trên cùng một phương pháp đánh bại mục đích của nhau.Đây là lý do tại sao PHP 5.2+ không cho phép các phương thức lớp tĩnh trừu tượng.PHP 5.2+ does not allow abstract static class methods.