gpt4 book ai didi

php - 解释这个单例工厂模式

转载 作者:可可西里 更新时间:2023-11-01 00:35:22 24 4
gpt4 key购买 nike

class ConnectionFactory
{
private static $factory;
public static function getFactory()
{
if (!self::$factory)
self::$factory = new ConnectionFactory(...);
return self::$factory;
}

private $db;

public function getConnection() {
if (!$db)
$db = new PDO(...);
return $db;
}
}

function getSomething()
{
$conn = ConnectionFactory::getFactory()->getConnection();
.
.
.
}

Source

有几件事我不明白

  1. 当我说“无需启动类就可以访问类的静态属性”时,我说得对吗
  2. !db 做什么
  3. 这是怎么发生的 ConnectionFactory::getFactory()->getConnection();
  4. 谁能解释一下getFactory方法

最佳答案

  1. 你就在这里。
  2. >!是一个不。这意味着如果 $db 为假则初始化它。由于它在静态方法中,它将保持初始化状态,并且下一次将返回现有的 $db,因为这是第二次!$db == false。
  3. 与 $db 一样,它检查 $factory 的实例是否存在,如果不存在则创建一个并返回它,否则返回现有实例。

4.

public static function getFactory()
{
if (!self::$factory) // is self::$factory initialised?
self::$factory = new ConnectionFactory(...); //initialise it
return self::$factory; //return self::$factory
}

这里 $factory 似乎是一个在 eles 某处设置的变量。大概它可以包含几个不同的类名。不会改变函数的工作方式。它是一个单例模式

添加关于此模式的有趣链接 wikipedia

关于php - 解释这个单例工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com