我想在PHP中显示调用对象内的所有数据,但它向我显示了无法将类Book的对象转换为字符串的致命错误

I want to show all the data inside calling object in PHP, but it show me the fatal error that Object of class Book could not be converted to string

提问人:Muhammad Mujtaba 提问时间:7/13/2023 最后编辑:A.LMuhammad Mujtaba 更新时间:8/10/2023 访问量:25

问:

我在索引中创建了一个 Book 类.php我在其中创建了一些变量,还有一个构造函数,当我将我的值放入 Object 中时,它从对象中获取值,它向我展示了 Book 类的 Object 无法转换为字符串的致命错误,该代码有什么问题。我还附上了我的代码。

我在索引 .php 文件中的代码

<?php
    class Book{
        var $title;
        var $author;
        var $pages;
        var $price;
        function __construct($a_title , $a_author , $a_pages , $a_price){
            $this->title=$a_title;
            $this->author=$a_author;
            $this->pages=$a_pages;
            $this->price=$a_price;

        }
    }
    $book1 = new Book("One Day The Life will be End","Muhammad Mujtaba",400,32500);
    $book2 = new Book("A Horse Man In The Sky","Ali Hassan",550,2000);
    echo $book1;
    echo "<br> <br>";
    echo $book2;
?>

我想显示我将放入对象中的所有值都可以在浏览器上看到,但它向我显示了致命错误。

PHP 对象 OOP 构造函数

评论

1赞 Nico Haase 8/7/2023
预期输出是多少?您尝试过如何解决问题?
0赞 A.L 8/10/2023
为什么不使用定义的属性?要显示标题,请执行以下操作: .echo $book->title;

答:

1赞 Gaëtan Trema 7/13/2023 #1

我认为除非你在类中创建一个方法,否则你不会让PHP将你的对象从这个类转换为一个字符串,当你尝试这样的对象时,这就是你正在做的事情。__toString()echo

所以,正如我上面提到的,你可以

  • 如果你真的希望能够“回显”你的对象,请创建一个方法(参见关于魔术方法的文档__toString())
  • 使用 or 函数,但它会给出非常原始的输出。var_dump($book1)print_r($book1)

评论

0赞 Muhammad Mujtaba 7/14/2023
非常感谢