必须实现一个方法来打印书籍的名称,年份和作者,并且我不断收到与myBook及其中的参数相关的错误。
<?php
class Book{
public $name = "harry potter";
public $year = "1999";
public $author = "jk rowling";
function myBook($n, $y, $a){
$this -> name = $n;
$this -> year = $y;
$this -> author = $a;
}
function myStatement(){
echo"book".$this -> name."<br>";
echo"year".$this -> year."<br>";
echo"author".$this -> author."<br>";
}
}
$object1 = new Book();
$object1 -> myBook($n);
$object2 = new Book();
$object2 -> myBook($y);
$object3 = new Book();
$object3 -> myBook($a);
?>
答案 0 :(得分:2)
您的方法定义有3个参数,但您只发送1个参数。请参阅.. $object1 -> myBook($n);
应该是$object1 -> myBook('The DaVinci Code','2013','Dan Brown');
如果您正在寻找可选的参数,请重新定义您的方法
function myBook($n=null, $y=null, $a=null){ // Make them as optional parameters
编辑:
请参阅此代码..
<?php
class Book{
public $name = "harry potter";
public $year = "1999";
public $author = "jk rowling";
function myBook($n, $y, $a){
$this -> name = $n;
$this -> year = $y;
$this -> author = $a;
}
function myStatement(){
echo"book".$this -> name."<br>";
echo"year".$this -> year."<br>";
echo"author".$this -> author."<br>";
}
}
$object1 = new Book();
$object1-> myBook('The DaVinci Code','2013','Dan Brown'); //I am passing 3 params to your method.
$object1-> myStatement(); //This method prints what we have sent.
输出:
bookThe DaVinci Code
year2013
authorDan Brown
答案 1 :(得分:0)
他们设置的方式看起来不太正确,很难说出你想要做什么。这些错误可能与您将$n
,$y
和$a
传递到myBook
方法的位置有关 - 这些变量都没有设置在范围之外该课程,但您正在设置$object1
/ $object2
/ $object3
并尝试将其传入。
此外,您拥有它的方式,看起来您正试图在$name
上设置$object1
(如果设置了$n
则会有效),{{1} $year
上的$object2
和$object3
上的$作者,但是在方法调用的第一个参数中将它们全部放在一起,您将最终在所有3上设置$name
。
答案 2 :(得分:0)
如果你通过$n
,你必须将值传递给函数。它会给你一个错误的未定义变量。例如
myFunction的( '阿伦');
函数接受了定义部分中的三个参数,但是你只传递了一个参数。所以你的程序会有一个歧义。试试这个代码。我希望它有用
<?php
class Book{
public $name = "harry potter";
public $year = "1999";
public $author = "jk rowling";
function myBook($n, $y, $a){
$name = $n;
$year = $y;
$author = $a;
echo"book".$name."<br>";
echo"year".$year."<br>";
echo"author".$author."<br>";
}
}
$object1 = new Book();
$object1 -> myBook('Immortals of Meluha','1992','Anand');
?>