【问题标题】:PHP Creating 2 or more instances of the same object, is it possible to retrieve information from the first object?PHP 创建同一个对象的 2 个或多个实例,是否可以从第一个对象中检索信息?
【发布时间】:2021-01-11 10:16:00
【问题描述】:

我有一个小项目正在进行,由于我在 OOP 方面不是最擅长的,所以我来这里寻求帮助。 我有一个名为“truckinfo”的课程

class truckinfo
{
    public $vendor;
    public $truckcount;
    public $plate;
}

现在我从其他地方获取车牌或供应商等信息,然后将卡车显示在列表中。 我打算像这样创建列表

for($i = 0; $i < 3; $i++){
    $truck = new truckinfo();
    $truck->plate =  "abc" . $i;
    $truck->truckcount = $i + 5;
    echo $truck->truckcount;
}

我的问题是,是否有可能在显示所有卡车后从第一辆卡车(在本例中为带有“abc0”牌的卡车)获取信息,或者我只能获取进入循环的最新卡车的信息?

提前谢谢你。

【问题讨论】:

  • 目前您在每次循环时都会覆盖 $truck,因此不会保留较早的信息。您可以考虑将每个新对象放入一个数组中,以便以后找到它们。
  • 对象没有被保存,然后,在循环之后,有资格被垃圾收集

标签: php class instance


【解决方案1】:

有了这个小逻辑,你就没有变量来保存对第一个卡车对象的引用,因此(也许通过一些我不知道的诡计)无法获取该对象。通常在基础课程中,您会接触到所谓的“管理”类,这些类构造一种对象并在数组(或其他数据结构)中跟踪它们,允许您搜索它们等。特别是如果您开始致力于小型基本 CRUD 应用程序很高兴将这个职责归为一个单独的类。 通过这种方式,您可以管理对象的标识,并更清晰地获取和返回唯一标识它的所需对象。

让我补充一点,我假设您的示例将它们存储在关联数组中:$trucks[$truck-&gt;plate] = $truck 为自己创建一个车牌到卡车信息对象的小映射就足够了。然后,您可以通过车牌直接访问和检索它们。

$trucks = [];
for($i = 0; $i < 3; $i++){
    $truck = new truckinfo();
    $truck->plate =  "abc" . $i;
    $truck->truckcount = $i + 5;
    echo $truck->truckcount;

    $trucks[$truck->plate] = $truck
}

echo $trucks['abc0']->truckcount;

【讨论】:

    【解决方案2】:

    您可以简单地创建任意数量的对象实例。例如。您可以将它们保存在一个数组中以供以后直接访问。

    $trucks = array();
    
    for($i = 0; $i < 3; $i++){
       $trucks[$i] = new truckinfo();
       $trucks[$i]->plate =  "abc" . $i;
       $trucks[$i]->truckcount = $i + 5;
       echo $trucks[$i]->truckcount;
    }
    
    echo $trucks[0]->truckcount; //example
    

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 1970-01-01
      • 2012-07-15
      • 2012-11-11
      • 1970-01-01
      • 2011-07-07
      • 2014-12-28
      • 2013-09-13
      • 2020-05-30
      相关资源
      最近更新 更多