【问题标题】:PHP OOP UNSET object from class in __construct__construct 中的类中的 PHP OOP UNSET 对象
【发布时间】:2014-10-08 01:37:55
【问题描述】:

我有一些创建对象的类。在 __construct 函数中,我检查属性。如果它们不匹配,我想删除创建的对象。

$example = new example('Value 1', 2, false);


foreach (get_object_vars($this) as $propertie => $value) {
    if (empty($value)) {
        // unset(); What i have to insert in unset() ?  
    }
}

谢谢!

【问题讨论】:

  • __destruct in __construct? 的可能副本。这篇文章详细介绍了几种以“正确”方式进行操作的选项
  • 当您在 __construct() 函数中时,您不能“取消”对象实例化。在构造函数中引发异常或创建工厂,它将为您安排所有实例化例程和依赖项

标签: php class oop unset construct


【解决方案1】:

您需要取消设置创建的对象。

不要在你的构造函数中这样做,在你创建 obj 的地方这样做。

要集中此代码,您可以构建一个Factory。然后你可以告诉那个工厂你想要一个example类型的obj,这些属性设置为val1, val2, val3...

然后工厂将运行下面的代码并在一切正常时返回 obj,如果没有,您可以发出错误消息来解释发生了什么问题,例如属性未设置或其他什么。然后你就可以对它做出适当的反应了。

$example = new example('Value 1', 2, false);

foreach (get_object_vars($example) as $propertie => $value) {
    if (empty($value)) {
        unset($exampe);
        break; //This stops the foreach
    }
}

【讨论】:

  • Foreach 在构造函数中...我无法从该位置访问 $example
  • 啊,好吧,我在你的问题中不清楚。我会更新我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 2014-02-05
  • 2013-08-03
  • 2011-04-21
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多