PHP中的函数是以变量$bar
为参数,像这样构造的foo($bar)
。当您想将$bar
的值转换为布尔值或字符串时,您需要执行以下操作:
(string)$bar;
考虑到其他函数的语法,我觉得有点奇怪。与许多其他语言相比,为什么PHP中的类型转换是这样执行的,比如
ToString($bar);
例如。我想更好地理解这种语言的句法设计。
(string)
是内部的实际数据类型。所以考虑一下这个
$bar = 0; //int
$foo = '0'; //string
string
转换所做的只是尝试从该值中生成一个字符串。换句话说,它只是将数字转换为对应的字符。它本身不适用于像array
这样的构造
$bar = [0];
echo (string)$bar; // E_NOTICE: array to string conversion, outputs 'Array'
现在,按照你的问题,对象可以有一个神奇的方法__toString()
class Foo {
protected $bar = 'Hi';
public function __toString() {
return $this->bar;
}
}
$x = new Foo();
echo (string)$x; // outputs 'Hi'
当我们试图将Foo
对象转换为字符串时,它会调用神奇的方法