如何为嵌套的PHP类使用动态变量名

如何为嵌套的PHP类使用动态变量名,php,jquery,class,Php,Jquery,Class,我有一个嵌套的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

我有一个嵌套的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”。我找了找

所以我做了这个

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

同样的结果。请帮忙。

试试这样的方法

public function getbookname($bookno){
  return $this->$bookno->bookname;
}

试试这样的

public function getbookname($bookno){
  return $this->$bookno->bookname;
}

试试这样的

public function getbookname($bookno){
  return $this->$bookno->bookname;
}

试试这样的

public function getbookname($bookno){
  return $this->$bookno->bookname;
}
试着这样做:

public function getbookname($bookno){
  $methodName = 'book' . $bookno;
  return $this->$methodName->bookname;
}
试着这样做:

public function getbookname($bookno){
  $methodName = 'book' . $bookno;
  return $this->$methodName->bookname;
}
试着这样做:

public function getbookname($bookno){
  $methodName = 'book' . $bookno;
  return $this->$methodName->bookname;
}
试着这样做:

public function getbookname($bookno){
  $methodName = 'book' . $bookno;
  return $this->$methodName->bookname;
}

像这样的东西就足够了

$this->{'book'. $bookno}->bookname;
请仔细阅读手册上的说明

比如,

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

像这样的东西就足够了

$this->{'book'. $bookno}->bookname;
请仔细阅读手册上的说明

比如,

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

像这样的东西就足够了

$this->{'book'. $bookno}->bookname;
请仔细阅读手册上的说明

比如,

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

像这样的东西就足够了

$this->{'book'. $bookno}->bookname;
请仔细阅读手册上的说明

比如,

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

您应该重新构造代码并改用数组

比如:

   class x {
     private $books = array();

     public function addBook($book) {
        $this->books[] = $book;
     }
     public function getBookName($no) {
        return $this->books[$no]->bookname;
     }
   }

你应该重组你的代码,改用数组

比如:

   class x {
     private $books = array();

     public function addBook($book) {
        $this->books[] = $book;
     }
     public function getBookName($no) {
        return $this->books[$no]->bookname;
     }
   }

你应该重组你的代码,改用数组

比如:

   class x {
     private $books = array();

     public function addBook($book) {
        $this->books[] = $book;
     }
     public function getBookName($no) {
        return $this->books[$no]->bookname;
     }
   }

你应该重组你的代码,改用数组

比如:

   class x {
     private $books = array();

     public function addBook($book) {
        $this->books[] = $book;
     }
     public function getBookName($no) {
        return $this->books[$no]->bookname;
     }
   }

试试“$bookname=”book“$书号;返回$this->$bookname->bookname;'试试“$bookname=”book“$书号;返回$this->$bookname->bookname;'试试“$bookname=”book“$书号;返回$this->$bookname->bookname;'试试“$bookname=”book“$书号;返回$this->$bookname->bookname;'重组是个好主意,但不是解决老年退休金问题的必要条件。重组是个好主意,但不是解决老年退休金问题的必要条件。重组是个好主意,但不是解决老年退休金问题的必要条件。重组是个好主意,但不是解决老年退休金问题的必要条件。