This article mainly shares with you a detailed explanation of the singleton mode in PHP. In fact, the singleton mode is easy to understand. As the name suggests, the singleton mode has only one instance. As an object creation mode, the singleton mode ensures that a certain class has only one instance. And instantiate it yourself and provide this instance to the entire system.
Three key points of the singleton pattern:
1. A class can only have one instance.
2. You must create this instance yourself.
3. You must provide this instance to the entire system yourself.
Why use PHP singleton mode?
1. A major aspect of PHP applications is for databases. There will be a large number of database operations in an application. When developing in an object-oriented way, if you use the singleton mode, you can avoid a large number of database operations. The resources consumed by the new operation can also reduce database connections, so that too many connections are less likely to occur.
2. If a class is needed to globally control certain configuration information in a system, then it can be easily implemented using the singleton mode.
3. It is easy to debug in a page request, because all the code is concentrated in one class, you can set hooks in the class, output logs, and avoid var_dump() and echo everywhere.
This example is enough to deeply understand the magic of the single interest mode:
test();// 复制对象将导致一个E_USER_ERROR. //$test_clone = clone $test;
The above two calls: Girlfriend::get_instance() and the constructor is only called once in the initial instance, and the initial var_dump (isset(self::$_instance)) returns false, and the constructor is not output for multiple subsequent instances...var_dump(isset(self::$_instance)) all returns true. . .
A class worthy of its name has only one instance... I believe everyone should be able to understand this example in depth.
The above is the detailed content of Detailed explanation of singleton pattern in PHP. For more information, please follow other related articles on the PHP Chinese website!