我试图自学如何使用PHP的类(我有C#背景),但我很难理解我做错了什么。
我用author
、isbn
等各种变量定义了一个book
类。然后我为自己创建了一个名为$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;
?>
我在这里肯定做错了什么。有什么帮助吗?
您需要使用$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
变量来设置类中的成员变量。我认为您目前正在做的是创建仅在函数内部的临时变量。