学习PHP类,变量就会消失


Learning PHP classes, variables vanish

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

我用authorisbn等各种变量定义了一个book类。然后我为自己创建了一个名为$bookbook,使用默认构造函数传递值。

问题是最后一行:

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;
?>

我在这里肯定做错了什么。有什么帮助吗?

您需要使用$this->为类的变量赋值:

$this->name         = $_name;
$this->isbn         = $_isbn;
$this->author       = $_author;
$this->publisher    = $_publisher
$this->publish_date = $_publish_date;
$this->pages        = $_pages;

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

class SomeClass {
   function __construct() {
       // Assign variables here
   }
}

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