1

我正在尝试自学如何使用 PHP 的类(我有 C# 背景),但我很难理解我做错了什么。

我定义了一个book包含各种变量的类,例如author,isbn等。然后我创建了一个book被调用的类$book,使用默认构造函数传入值。

问题是最后一行:

echo $book->name;

我希望它输出“Perdido Street Station”,但它什么也没输出。看来,我要做的就是像这样设置变量:

$book->name = "Perdido Street Station";

<?php
class book {
    var $name;
    var $isbn;
    var $author;
    var $publisher;
    var $publish_date;
    var $pages;

    function book($_name, $_isbn, $_author, $_publisher, $_publish_date, $_pages) {
        // type checking
        if (!is_string($_name) || !is_string($_isbn) || !is_string($_author) || !is_string($_publisher) || !is_string($_publish_date) || !is_int($_pages)) {
            return false;
        }
        $name         = $_name;
        $isbn         = $_isbn;
        $author       = $_author;
        $publisher    = $_publisher;
        $publish_date = $_publish_date;
        $pages        = $_pages;
    }
}

$book = new book("Perdido Street Station", "0330534238", "China Miéville", "Pan", "2011-05-2011", 867);
echo $book->name;
?>

一定有一些明显的事情我在这里做错了。有什么帮助吗?

4

3 回答 3

5

您需要使用$this->来分配给类的变量:

$this->name         = $_name;
$this->isbn         = $_isbn;
$this->author       = $_author;
$this->publisher    = $_publisher
$this->publish_date = $_publish_date;
$this->pages        = $_pages;
于 2013-08-12T16:28:54.563 回答
4

PHP 中的构造函数与您使用的语法不同:

class SomeClass {
   function __construct() {
       // Assign variables here
   }
}
于 2013-08-12T16:29:33.603 回答
2

我对此并不完全确定,但可能是您必须使用$this类中的变量来设置类中的成员变量。我认为您目前正在做的是创建仅在您的函数内部的临时变量。

于 2013-08-12T16:30:48.060 回答