【问题标题】:PHP - Append to object?PHP - 附加到对象?
【发布时间】:2021-02-27 01:47:37
【问题描述】:

我遇到了如何附加到对象的问题。

我得到错误:

Uncaught Error: Cannot use object of type Anteris\Autotask\API\Contacts\ContactEntity as array in...

如果它删除带有MobilPhoneEmail if 语句的部分,它工作正常。

代码:

Create new contact
$contact = new Anteris\Autotask\API\Contacts\ContactEntity([
'id' => 0, // Autotask requires that new entities have an ID of 0
'companyID' => intval($Companyid),
'firstName' => $Fornavn,
'lastName' => $Efternavn,
'isActive' => 1,
'phone' => $Telefon,
]);

Check if MobilPhone filled out
if (empty($MobilTelefon)) {
} else {
$contact['mobilePhone'] = $MobilTelefon;
}

Check if Email filled out
if (empty($Email)) {
} else {
$contact['emailAddress'] = $Email;
}

Create in Autotask
$client->contacts()->create( $contact );

【问题讨论】:

  • 嗯,消息很清楚,您正在尝试将对象用作数组,这是两个不同的东西。您不显示 Contact 实体的内容,因此很难提供帮助,但如果您在此实体中确实具有 mobilePhone 和 emailAddress 属性。然后你必须设置属性。让我们假设属性存在并且是公开的,您必须执行类似$contact->emailAddress = $email 之类的操作,而不是尝试将其用作数组。

标签: php append


【解决方案1】:

在第一行,您正在创建ContactEntity 类的实例。 $contact 是保存类的 instance 的变量。 $contact 现在是一个对象。

然而,在产生错误的行中,您将对象用作数组,这是不可能的。使用-> 运算符访问对象属性。使用[] 表示法访问数组元素。

Anteris source,你可以看到 在第 42 行,mobilePhone 被定义为public ?string $mobilePhone;。一个对象属性。

所以在你的代码中,而不是这样写:

$contact['mobilePhone'] = $MobilTelefon;

你必须这样写:

$contact->mobilePhone = $MobilTelefon;

其他变量也是如此。

【讨论】:

  • 另外,你可以重写你的if (empty())语句来检查它们是否不为空(if (!empty($MobilTelefon)) { ... },这样你就不必写一个什么都不做的空块了!
  • 谢谢,现在一切正常,并且确实重写了 if 语句 :)
猜你喜欢
  • 2018-03-02
  • 2011-04-15
  • 2010-10-11
  • 2012-01-07
  • 1970-01-01
  • 2015-11-21
  • 2019-07-06
  • 2019-04-29
  • 2014-02-14
相关资源
最近更新 更多