【问题标题】:Fatal error! Object of class Closure could not be converted to string致命错误!闭包类的对象无法转换为字符串
【发布时间】:2013-01-30 09:39:46
【问题描述】:

我已经制作了这个简单的购物车,我在其中制作了这个 if 和 else 函数,该函数进入了在我的邮件正文中调用的变量中,当您提交值时会显示此错误消息: 致命错误!闭包类的对象无法转换为字符串

下面是部分变量功能代码:

$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

【问题讨论】:

  • 错误出现在哪一行?
  • varer= function ($string) { is missing a $ before varer
  • 还有更好的方法是 $varer ($_POST['smu']>= 1) ? "============================================ Pilotjakke pelsforet Grå: \r \n $pilotjakkegrå \r\n\r\n ====================================== =====" : "" ;
  • 啊是 $varer 我刚才复制错了,错误信息位于 $varer 之后,不管那里是什么。
  • $varer 是一个需要 $string 参数的函数,您没有传递该参数。

标签: php function email variables fatal-error


【解决方案1】:

你的 $varer 不是一个字符串,而是一个对象(闭包类的实例)。您可能想要迭代它的对象属性。

看看这个页面上的例子:

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

如果你真的想将一个对象转换为一个字符串,你可以使用 'serialize()' (它不适用于闭包),例如:

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

要检查 var 的结构,请使用:

var_dump($varer);

【讨论】:

  • 我试过了,但收到了这条消息 PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure is not allowed' in C:\zpiderwebs\DefaultWeb\1_F0001\pp\lagersalg\ index.php:1028 堆栈跟踪:#0 C:\zpiderwebs\DefaultWeb\1_F0001\pp\lagersalg\index.php(1028): serialize(Object(Closure)) #1 {main} 在 C:\zpiderwebs\DefaultWeb 中抛出\1_F0001\pp\lagersalg\index.php 在第 1028 行
  • 那是因为我们在这里处理的是关闭。您可能需要 var_dump($varer) 来查看它的内容。更多信息在这里:bossduck.com/2009/07/php-5-3-closures-and-reflection
  • 我选择了一种更简单的方法,我把所有东西都弄得太复杂了,以至于我自己都蒙蔽了双眼。因为 $varer 中的变量已经有一个 if / else 函数,所以我设法修复了这些,所以 $varer 现在唯一要做的就是将它们收集在一起作为邮件正文:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 2013-08-07
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 2018-03-12
相关资源
最近更新 更多