__toString 在此示例中如何工作?
How __toString works in this example?
所以我发现了这个问题:
// name1.php
namespace Examples\Names;
class Name {
public function __toString() {
return "Laurel";
}
public static function get() {
return "Eminent";
}
}
// name2.php
namespace Examples;
include "name1.php";
class Name {
public function __toString() {
return "James";
}
public static function get() {
return "Cook";
}
}
echo new Name() . " | " . Names\Name::get();
而且我想明白为什么这个回显echo new Name() . " | " . Names\Name::get();
会显示James | Eminent
。
我想我从 Examples\Names\Name Eminent
中得到了关于第二部分 Names\Name::get()
的信息,因为它已经得到了,但是第一部分呢?为什么默认需要 James
?
此外,当我尝试移除从 Names\Name::get()
到 Names\Name()
的开关时,只是为了查看它是否从第二个 class - Cook
显示 __toString不起作用,我收到此错误 Fatal error: Uncaught Error: Call to undefined function Examples\Names\Name() in C
你能帮我吗?我真的很想明白。谢谢!
what about first part
...它使用 Examples
命名空间中的 class,因为它与 echo
语句位于同一命名空间中。它回显 James
,因为 __toString
- 当您尝试将对象放入字符串时,它作为 PHP 在幕后调用的默认函数。
switch from Names\Name::get() to Names\Name()
...它需要是 new Names\Name()
我想,如果你想实例化 class.
所以我发现了这个问题:
// name1.php
namespace Examples\Names;
class Name {
public function __toString() {
return "Laurel";
}
public static function get() {
return "Eminent";
}
}
// name2.php
namespace Examples;
include "name1.php";
class Name {
public function __toString() {
return "James";
}
public static function get() {
return "Cook";
}
}
echo new Name() . " | " . Names\Name::get();
而且我想明白为什么这个回显echo new Name() . " | " . Names\Name::get();
会显示James | Eminent
。
我想我从 Examples\Names\Name Eminent
中得到了关于第二部分 Names\Name::get()
的信息,因为它已经得到了,但是第一部分呢?为什么默认需要 James
?
此外,当我尝试移除从 Names\Name::get()
到 Names\Name()
的开关时,只是为了查看它是否从第二个 class - Cook
显示 __toString不起作用,我收到此错误 Fatal error: Uncaught Error: Call to undefined function Examples\Names\Name() in C
你能帮我吗?我真的很想明白。谢谢!
what about first part
...它使用 Examples
命名空间中的 class,因为它与 echo
语句位于同一命名空间中。它回显 James
,因为 __toString
- 当您尝试将对象放入字符串时,它作为 PHP 在幕后调用的默认函数。
switch from Names\Name::get() to Names\Name()
...它需要是 new Names\Name()
我想,如果你想实例化 class.