#php #append
#php #добавить
Вопрос:
У меня возникла проблема с добавлением к объекту.
Я получаю сообщение об ошибке:
Uncaught Error: Cannot use object of type AnterisAutotaskAPIContactsContactEntity as array in...
Если он удаляет часть с операторами MobilPhone
и Email
if, он работает нормально.
Код:
Create new contact
$contact = new AnterisAutotaskAPIContactsContactEntity([
'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 );
Комментарии:
1. Ну, сообщение совершенно ясно, вы пытаетесь использовать объект в качестве массива, что является двумя разными вещами. Вы не показываете содержимое объекта Contact, поэтому трудно помочь, но если у вас есть свойства MobilePhone и EmailAddress в этом объекте. Тогда вам нужно будет установить свойство. Давайте предположим, что свойства существуют и являются общедоступными, вам нужно будет сделать что-то вроде
$contact->emailAddress = $email
вместо того, чтобы пытаться использовать его как массив.
Ответ №1:
В первой строке вы создаете экземпляр ContactEntity
класса. $contact
это переменная, которая содержит экземпляр класса. $contact
теперь это объект.
Тем не менее, в строках, которые генерируют ошибку, вы используете объект как массив, что невозможно. Доступ к свойствам объекта осуществляется с помощью ->
оператора. Доступ к элементам массива осуществляется с помощью []
нотации.
В исходном коде Anteris вы можете видеть, что в строке 42 mobilePhone
определяется как public ?string $mobilePhone;
. Свойство объекта.
Итак, в вашем коде вместо того, чтобы писать это:
$contact['mobilePhone'] = $MobilTelefon;
Вы должны написать это:
$contact->mobilePhone = $MobilTelefon;
То же самое относится и к другим переменным.
Комментарии:
1. Кроме того, вы можете переписать свои
if (empty())
операторы, чтобы проверить, не являются ли они пустыми (if (!empty($MobilTelefon)) { ... }
, поэтому вам не нужно писать пустой блок, который ничего не делает!2. Спасибо, теперь все работает идеально, и я переписал инструкции if 🙂