2013-12-08 4 views
0

должны реализовать метод, который печатает имя, год и автор книги, и я продолжаю получать ошибки, связанные с myBook и аргументами в нем.Нужна помощь в php

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

?> 
+5

ошибки ты говоришь? – AbraCadaver

+0

У вас есть 3 параметра, вы только передаете 1. – Mihai

ответ

2

Ваше определение метода имеет 3 параметра, но вы отправляете только один параметр. См .. $object1 -> myBook($n);

Это должно быть что-то вроде $object1 -> myBook('The DaVinci Code','2013','Dan Brown');

Если вы ищете дополнительных Params, переопределить ваш метод как этот

function myBook($n=null, $y=null, $a=null){ // Make them as optional parameters 

EDIT:

Посмотреть этот код. .

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

Я дам вам обход и дам вам знать. –

+0

Полагает, что основная проблема заключается в том, что он считает, что один объект равен одной переменной, поэтому вместо того, чтобы подавать все 3 переменные на один и тот же объект, как он должен, он пытается создать объект для каждого. – Sylverdrag

+0

, поэтому один объект может использоваться для нескольких переменных. Я новичок в php, потому что это мой первый семестр, изучающий его. –

0

Они, как вы его настроить не выглядит правильно, это трудно сказать, что вы пытаетесь сделать. Ошибки, вероятно, связаны с тем, где вы проходите в $n, $y и $a - myBook - ни одна из этих переменных не задана за пределами области действия класса, но именно там вы настраиваете $object1/$object2/$object3 и пытается передать их.

Кроме того, так что у вас есть, это выглядит, как вы пытаетесь установить $name на $object1 (который будет работать, если $n был установлен), $year на $object2 и $ автора на $object3, но имея их всех в первом аргументе вызова метода, вы завершите настройку $name на всех 3.

+0

так как бы вы предложили установить имя, год и автора? –

+1

Трудно сказать, основываясь на вашем исходном коде, но вам нужно либо передать его так: $ object-> myBook ('a name'); или сначала установите его: $ n = 'a name'; $ Object-> MyBook ($ п); Ответ Шанкара, вероятно, демонстрирует лучше. – JenGettings

+0

спасибо всем ... сейчас он работает! –

0

Вы должны передать значение функции, если и пройти $n .Это будет дать и в качестве примера ошибки не определен variable.for

MYFUNCTION («Арун»);

Другое дело, функция принял три аргумента в части определения, но у прошло только один argument.So будет неоднозначность в Уре program.Try это code.I надеюсь, что она будет полезна

<?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'); 


?> 
+0

это сработало !!! Спасибо большое!!теперь я знаю, как это сделать в следующий раз! Огромное спасибо за наше время! –

Смежные вопросы