Фатальная ошибка! Объект класса Closure не удалось преобразовать в строку

я сделал эту простую корзину для покупок, где я сделал эту функцию if и else, которая входит в переменную, которая вызывается в моем теле письма, и это сообщение об ошибке появляется, когда вы отправляете значения: Неустранимая ошибка! Объект класса Closure не удалось преобразовать в строку

Вот часть кода переменной функции:

$varer= function ($string) {
if ($_POST['smu']>= 1) 
{
"===========================================
Pilotjakke pelsforet Grå: \r\n
$pilotjakkegrå \r\n\r\n
===========================================" ;
}
else if($_POST['smu']<= 0)
{
    "";
}

//

и это часть тела письма:

$body = "


Bekreftelse på bestilling:
\r\n\r\n 

Navn: $name_field\r\n 
===========================================
E-Mail: $email_field\r\n 
===========================================
Firma: $firma\r\n 
===========================================
Adresse: $adresse\r\n 
===========================================
Poststed: $poststed\r\n 
===========================================
Postnummer: $postnummer\r\n 
===========================================
Firma: $firma\r\n 
===========================================
Telefon: $tlf\r\n 
===========================================
Message: $message\r\n\r\n
=====================================================================================
Takk for at du bestilte hos oss, orderen din vil sett på og du vil motta en faktura snart. 
\r\n\r\n
=====================================================================================
Varebestillingen : 
$varer
\r\n\r\n
===========================================
Total Order Sum: $order kr
===========================================
";

и я получаю строку с ошибкой, где находится $varer. Я пытался преобразовать его в строку, но я, вероятно, сделал все это неправильно.

Вы можете посмотреть сайт здесь: http://www.premiere-produkter.no/pp/lagersalg/index.php


person Tommy    schedule 30.01.2013    source источник
comment
в какой строке возникает ошибка?   -  person Techie    schedule 30.01.2013
comment
varer= function ($string) { отсутствует $ перед varer   -  person Dave    schedule 30.01.2013
comment
также лучшим способом сделать это будет $varer ($_POST['smu']›= 1) ? ========================================= Pilotjakke pelsforet Grå: \r\ n $pilotjakkegrå \r\n\r\n ===================================== ==== : ;   -  person Dave    schedule 30.01.2013
comment
ах, это $varer, я просто неправильно скопировал, сообщение об ошибке находится после $varer, независимо от того, что там.   -  person Tommy    schedule 30.01.2013
comment
$varer — это функция, требующая аргумента $string, который вы не передаете.   -  person Ja͢ck    schedule 30.01.2013


Ответы (1)


Ваш $varer — это не строка, а объект (экземпляр класса Closure). Вероятно, вы захотите перебрать свойства объекта.

Взгляните на примеры на этой странице:

http://php.net/manual/en/language.oop5.iterations.php

Если вы действительно хотите преобразовать объект в строку, вы можете использовать 'serialize()' (который не работает для закрытия), например:

Varebestillingen : ".serialize($varer)."\r\n\r\n

Чтобы проверить структуру вашего var, используйте:

var_dump($varer);
person Teun Lassche    schedule 30.01.2013
comment
Я пробовал это, но получил это сообщение Неустранимая ошибка PHP: неперехваченное исключение «Исключение» с сообщением «Сериализация «Закрытие» не разрешено» в C:\zpiderwebs\DefaultWeb\1_F0001\pp\lagersalg\index.php:1028 Трассировка стека: #0 C:\zpiderwebs\DefaultWeb\1_F0001\pp\lagersalg\index.php(1028): сериализовать(Object(Closure)) #1 {main} добавлено в C:\zpiderwebs\DefaultWeb\1_F0001\pp\lagersalg\index .php в строке 1028 - person Tommy; 30.01.2013
comment
Это потому, что мы имеем дело с закрытием здесь. Вы можете использовать var_dump($varer), чтобы просмотреть его содержимое. Подробнее здесь: bossduck.com/2009/07 /php-5-3-закрытие и отражение - person Teun Lassche; 30.01.2013
comment
Я пошел по более простому пути, я так все усложнил, что слепил себя. Поскольку переменные в $varer уже имели функцию if/else, мне удалось их исправить, так что единственное, что сейчас делает $varer, — это собирать их вместе для тела письма :) - person Tommy; 30.01.2013