在PHP中复制新对象?

在PHP中复制新对象?,php,object,Php,Object,如果我在PHP5.x中这样做(通常是伪代码): 类对象{ __构造($id){ } } $array(1)=新对象(1); $array(1)=新对象(1); 我是否在浪费精力(内存、cpu等)?数据库查询会运行两次吗 避免这种情况的最佳方法是什么(如果是担忧)?使用对象的$array(1)实例isset($array(1))数组\密钥\存在(1,$array) 有没有(好的?)方法来检查类,看看它是否已经存在,然后再做所有的工作 编辑:为了清楚起见,我不需要这个对象两次。并且该对象将再次使

如果我在PHP5.x中这样做(通常是伪代码):

类对象{
__构造($id){
}
}
$array(1)=新对象(1);
$array(1)=新对象(1);
我是否在浪费精力(内存、cpu等)?数据库查询会运行两次吗

避免这种情况的最佳方法是什么(如果是担忧)?使用对象的
$array(1)实例
<代码>isset($array(1))<代码>数组\密钥\存在(1,$array)

有没有(好的?)方法来检查类,看看它是否已经存在,然后再做所有的工作



编辑:为了清楚起见,我不需要这个对象两次。并且该对象将再次使用
$array(523)=新对象(523)我的主要问题是如何最好地避免重复创建完全相同的对象。

如果要避免创建多个对象,您有几个选择。我想到的是

  • 创建一次对象,并确保将其传递到需要的位置。这意味着您必须检查代码中与该对象相关的依赖项

  • 使用对象工厂来构造对象,如果对象已经创建,它可以返回对对象的引用,而不是创建新的引用

  • 实现单例模式


  • 与其他任何事情一样,要权衡取舍,因此请检查您的情况并确定最适合您的方式。

    如果您想避免创建多个对象,您有几个选择。我想到的是

  • 创建一次对象,并确保将其传递到需要的位置。这意味着您必须检查代码中与该对象相关的依赖项

  • 使用对象工厂来构造对象,如果对象已经创建,它可以返回对对象的引用,而不是创建新的引用

  • 实现单例模式


  • 与其他任何事情一样,权衡是有好处的,所以检查一下你的情况,决定什么最适合你。

    关于你的最后一句话,请仔细阅读单件模式,不要在@vodich所说的构造()中执行数据库操作。不要读单例反模式。保持一个DB连接是很好的。但是,应该避免为此目的使用
    单例。你是否需要两个不同的对象?创建一个带有缓存的工厂,该工厂返回现有对象,并且只在未实例化时创建它们。如果你是最后一句话,请仔细阅读单例模式不要在@vodich所说的构造()中执行数据库操作。不要读单例反模式。保持一个DB连接是很好的。但是,应该避免为此目的使用
    单例。是否需要两个不同的对象?创建一个带有缓存的工厂,该工厂返回现有对象,并且仅在未实例化时创建它们。
    
    class object{
        __construct($id){
           <<perform database query>>
        }
    }
    
    $array(1) = new object(1);
    $array(1) = new object(1);