Php 隐式转换为字符串,而不是获取;对象ID;

Php 隐式转换为字符串,而不是获取;对象ID;,php,string,object,casting,tostring,Php,String,Object,Casting,Tostring,我已经转移到一个新的网络主机,我们使用的是PHP5.1,而不是我一直使用的5.2。我还没有弄清楚这是php版本还是配置问题 目前,大多数(或所有)具有u-toString函数的类都会转换为“Object ID#”(如php4),但在它们返回正确值之前 如何解决这个问题?显然在PHP5.2之前,\uuuuuToString方法只是在某些情况下“神奇地”调用的(例如echo()和print())。因此,如果您当前在直接输出函数之外以“神奇”的方式使用\uu toString(),它将无法按预期工作

我已经转移到一个新的网络主机,我们使用的是PHP5.1,而不是我一直使用的5.2。我还没有弄清楚这是php版本还是配置问题

目前,大多数(或所有)具有u-toString函数的类都会转换为“Object ID#”(如php4),但在它们返回正确值之前


如何解决这个问题?

显然在PHP5.2之前,
\uuuuuToString
方法只是在某些情况下“神奇地”调用的(例如
echo()
print()
)。因此,如果您当前在直接输出函数之外以“神奇”的方式使用
\uu toString()
,它将无法按预期工作

:

值得注意的是,在PHP之前 5.2.0只有在直接组合时才调用
\uuu toString
方法 使用
echo()
print()
。自PHP以来 5.2.0,它在任何字符串上下文中调用(例如在
printf()
中使用
%s
修饰符),但不在其他类型中 上下文(例如,使用
%d
修饰符)。 从PHP5.2.0开始,转换对象 不带
\uuu toString
方法到字符串 将导致
E\u可恢复\u错误


显然在PHP5.2之前,
\uuuuuToString
方法只是在某些情况下被“神奇地”调用的(例如
echo()
print()
)。因此,如果您当前在直接输出函数之外以“神奇”的方式使用
\uu toString()
,它将无法按预期工作

:

值得注意的是,在PHP之前 5.2.0只有在直接组合时才调用
\uuu toString
方法 使用
echo()
print()
。自PHP以来 5.2.0,它在任何字符串上下文中调用(例如在
printf()
中使用
%s
修饰符),但不在其他类型中 上下文(例如,使用
%d
修饰符)。 从PHP5.2.0开始,转换对象 不带
\uuu toString
方法到字符串 将导致
E\u可恢复\u错误

一些主机公司(如1和1)同时运行PHP4.x和5.x,默认为4.x。您可能需要有一个.htaccess文件,以确保您使用的是正确版本的PHP

此外,magic _toString()与5.2+版略有不同,具体如下:

值得注意的是,在PHP5.2.0之前,_toString方法仅在与echo()或print()直接组合时才被调用。自PHP 5.2.0以来,它在任何字符串上下文(例如,在带有%s修饰符的printf()中)中调用,但在其他类型上下文(例如,带有%d修饰符)中不调用。自PHP5.2.0以来,将没有uuu-toString方法的对象转换为字符串将导致E_u可恢复错误

因此,这可能取决于您如何调用输出。

一些主机公司(如1和1)同时运行PHP4.x和5.x,并默认为4.x。您可能需要有一个.htaccess文件,以确保您使用的是正确版本的PHP

此外,magic _toString()与5.2+版略有不同,具体如下:

值得注意的是,在PHP5.2.0之前,_toString方法仅在与echo()或print()直接组合时才被调用。自PHP 5.2.0以来,它在任何字符串上下文(例如,在带有%s修饰符的printf()中)中调用,但在其他类型上下文(例如,带有%d修饰符)中不调用。自PHP5.2.0以来,将没有uuu-toString方法的对象转换为字符串将导致E_u可恢复错误


因此,这可能取决于您如何调用输出。

您能更明确地说明您遇到的问题吗?关于之前发生的事情(使用5.2)和现在发生的事情(使用5.1)的更详细信息?您能更明确一点您遇到的问题吗?关于以前发生的事情(5.2版)和现在发生的事情(5.1版)的更多细节?我意识到有些输出是通过echo实现的,有些是作为返回值的。现在我已经联系了支持人员来更新php5。感谢没有问题-确保它的PHP5.2是截止值。我意识到有些输出是通过echo的,有些是作为返回值的。现在我已经联系了支持人员来更新php5。感谢没有问题-确保它的PHP5.2是截止点。