在php中需要帮助

时间:2013-12-08 18:06:16

标签: php

必须实现一个方法来打印书籍的名称,年份和作者,并且我不断收到与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); 

?>

3 个答案:

答案 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'); 


?>