The content of this article is about PHP singleton and factory mode, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
Factory mode:
<?php interface persion{ public function say(); } class man implements persion{ public function say(){ echo 'i am man'; } } class factory{ public static function createman(){ return new man(); } } $obj = factory::createman(); $obj->say();
Factory mode, what is often used is to change the name of the man class. You only need to change the content of the createman class in the factory class. There is no need to change other places where the class is called. The factory mode actually just calls the class again. Another layer of factory class is added between the place and the class. The calling address directly calls the factory class
Single case mode:
Single column mode is often used to connect to the database class, such as:
<?php class Database { // 声明$instance为私有静态类型,用于保存当前类实例化后的对象 private static $instance = null; // 数据库连接句柄 private $db = null; // 构造方法声明为私有方法,禁止外部程序使用new实例化,只能在内部new private function __construct($config = array()) { $dsn = sprintf('mysql:host=%s;dbname=%s', $config['db_host'], $config['db_name']); $this->db = new PDO($dsn, $config['db_user'], $config['db_pass']); } // 这是获取当前类对象的唯一方式 public static function getInstance($config = array()) { // 检查对象是否已经存在,不存在则实例化后保存到$instance属性 if(self::$instance == null) { self::$instance = new self($config); } return self::$instance; } // 获取数据库句柄方法 public function db() { return $this->db; } // 声明成私有方法,禁止克隆对象 private function __clone(){} // 声明成私有方法,禁止重建对象 private function __wakeup(){} } $config = array( 'db_name' => 'test1', 'db_host' => 'localhost', 'db_user' => 'root', 'db_pass' => '' ); //获取数据库连接句柄 $obj = database::getInstance($config); $db = $obj->db();
A simple understanding of the singleton mode is to make the constructor of the class a private property, so that direct external instantiation can be prohibited, and then create a static method in which to determine whether the current class has an instantiated object. If not, instantiate yourself, then assign it to a class attribute and return it. If it is instantiated, return the instantiated object directly
The above is the detailed content of PHP singleton and factory pattern. For more information, please follow other related articles on the PHP Chinese website!