php 5.1.6 魔法 __toString 方法
在 codeigniter 中,我尝试使用 this 插件,它需要我实现一个 toString我的模型中的方法。我的 toString 方法只是
public function __toString()
{
return (string)$this->name;
}
在我的本地计算机上使用 php 5.3 一切正常,但在使用 php 5.1.6 的生产服务器上它显示“Object id#48”,其中应该出现该对象的 name 属性的值....我发现了一些关于 这里有问题,但我仍然不明白......我该如何解决这个问题?
In codeigniter Im trying to use this plugin which requires I implement a toString method in my models. My toString method simply does
public function __toString()
{
return (string)$this->name;
}
On my local machine with php 5.3 everything works just fine but on the production server with php 5.1.6 it shows "Object id#48" where the value of the name property of that object should appear..... I found something about the problem here but I still dont understand... How can I fix this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
PHP 5.2.0
PHP >= 5.2.0
PHP < 5.2.0
PHP >= 5.2.0
引用手册:
我认为如果您在 PHP 中使用 __toString 方法,您必须手动调用它5.2 并且不在回显或打印的上下文中。
To quote from the manual:
I think you have call the __toString method manually if you're using it in PHP < 5.2 and not in the context of an echo or print.
升级 PHP
我正在处理同样的问题,我怀疑您最好的选择是将生产服务器上的 php 升级到
>= 5.2.0
将来(我目前正在艰难地学习这一点),尝试在您将部署到的同一版本上进行开发。
Upgrade PHP
I'm dealing with the same problem, I suspect your best option will be to upgrade php on the production server to
>= 5.2.0
In the future (I'm currently learning this the hard way), try to develop on the same version you will deploy to.
对于版本 << 的版本,您必须显式调用 php 魔术函数 __toString() 5.2.所以你的代码将变成这样:
For versions > 5.2 自动调用__toString
You have to explicitly call the php magic function __toString() for versions < 5.2. So your code will become something like this:
For versions > 5.2 the __toString is automatically called
您需要安装
sudo apt install php7.0-mbstring
需要根据您的情况更改 PHP 版本。
之后不要忘记运行
service apache2 restart
希望这会有所帮助。
You need to install
sudo apt install php7.0-mbstring
Need to change the PHP version as per your.
And after this do not forget to run
service apache2 restart
Hope this will help.