我有一个嵌套的PHP类,我可以通过
访问它public function getbookname($bookno){
$namex='No book';
switch($bookno){
case 1:
$namex=$this->book1->bookname;
break;
case 2:
$namex=$this->book2->bookname;
break;
case 3:
$namex=$this->book3->bookname;
break;
}
return $namex;
}
这个班可能有多达50本书,所以我需要创建" bookX"动态。我搜索并找到how to create variable names dynamically。
所以我做了这个
public function getbookname($bookno){
return ${'$this->book' . $bookno. '->bookname'};
}
但它不起作用,我收到以下错误:
Notice: Undefined variable: $this->book1->bookname in
C:\wamp\www\htdocs\lib4\includes\oop_book.php on line 32
正如您所看到的,$this->book1->bookname
是一种正确的方法调用。
我也试过
public function getbookname($bookno){
$methodreturn = ${'$this->book' . $bookno. '->bookname'};
return $methodreturn;
}
结果相同。请帮忙。
答案 0 :(得分:1)
试试这样:
public function getbookname($bookno){
$methodName = 'book' . $bookno;
return $this->$methodName->bookname;
}
答案 1 :(得分:1)
这样的事情就足够了。
$this->{'book'. $bookno}->bookname;
在手册上阅读variable variables。
例如;
<?php
class books {
private $book1 = "Harry Potter";
private $book2 = "Dracula";
private $book3 = "The Dictionary";
public function getBook($bookno) {
return $this->{'book'. $bookno};
}
}
$books = new books();
echo $books->getBook(2); //Output: Dracula
答案 2 :(得分:1)
您应该重新构建代码并改为使用数组!
喜欢:
class x {
private $books = array();
public function addBook($book) {
$this->books[] = $book;
}
public function getBookName($no) {
return $this->books[$no]->bookname;
}
}
答案 3 :(得分:0)
尝试这样的事情
public function getbookname($bookno){
return $this->$bookno->bookname;
}