【问题标题】:How __toString works in this example?__toString 在这个例子中是如何工作的?
【发布时间】:2021-10-05 05:44:06
【问题描述】:

于是我发现了这个问题:

// 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 echo new Name() . " | " . Names\Name::get(); 会显示 James | Eminent。 我认为我从Examples\Names\Name Eminent 中得到了关于第二部分Names\Name::get() 的信息,因为它有那个get,但是第一部分呢?为什么默认使用James

此外,当我尝试从 Names\Name::get() 删除切换到 Names\Name() 只是为了查看它是否显示第二类的 __toString - Cook 它不起作用并且我收到此错误 Fatal error: Uncaught Error: Call to undefined function Examples\Names\Name() in C

你能帮我解决这个问题吗?我真的很想明白。谢谢!

【问题讨论】:

  • 现在我明白了。非常感谢!
  • 太棒了。我把它转移到下面的正确答案,所以你可以mark it as accepted - 谢谢! :-)

标签: php get tostring


【解决方案1】:

第一部分呢

...它使用来自Examples 命名空间的类,因为它与echo 语句在同一个命名空间中。它与James 相呼应,因为__toString - 当您尝试将对象放入字符串时,它充当PHP 在后台调用的默认函数。

从 Names\Name::get() 切换到 Names\Name()

...如果您想实例化该类,我认为它需要是 new Names\Name()

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 2021-10-14
    • 2021-10-05
    • 1970-01-01
    • 2014-10-22
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多