2014-04-14 2 views
-1

여기에 수퍼 단순 스크립트가 있습니다.이 스크립트를 오류없이 실행하고 동일한 작업을 수행하는 방법에 대한 경고가 나오면 계속 변수가 정의되지 않습니다.Public function에서 선언 된 변수는 정의되지 않음을 나타냅니다.

class person{ 
      public $integer=4; 
      public $name; 
      public function __construct($name){ 
      $this->name = $name; 
      } 
      public function pre(){ 
       return "pre message"; 
      } 
      public function after($name){ 
       return "post message".$name; 
      } 
     }; 
     $person1 = new person($name="jason"); 
     $person2 = new person($name="bourne"); 
     echo $person1->pre(); 
     echo $person2->after(); 
+0

'$ dog1'과'$ dog2'는 정의되지 않았습니다 ... [좋은 IDE] (http://www.sitepoint.com/best-php-ide-2014-survey-results/)를 사용하여 문제를보십시오 코드를 입력 할 때 코드에서 이러한 문제를 피할 수 있습니다. – DCoder

+0

죄송합니다.이 코드 샘플에서 $ dog1/2를 바꾸는 걸 잊었지만 로컬에서 변경되고 $ person1-> after ($ this-> name)를 추가합니다. 반환 중입니다 치명적인 오류 : – Plentybinary

+0

객체에없는 경우 $ this를 사용하면 정의되지 않은 변수가 함수 후 $ name에 나열됩니다. – Plentybinary

답변

0

내가 방금 원하는 매개 변수를 전달하여 새로운 객체를 생성 할 생각이 아닌의 할당은 :

$person1 = new person("jason"); 
    $person2 = new person("bourne"); 
3

당신은 $person1$person2 같은 개체를 설정하지만, $dog1로 호출하고 있고 $dog2

0

after에 대한 인수를 $dog2->after();에 전달하지 않았습니다. 따라서 $name은 해당 메소드에서 정의되지 않습니다. 클래스 속성 $name을 사용하려면 $this->name을 사용하십시오. @MichaelKing는 지적

또한, 당신은 $dog1$dog2를 참조하지만, $person1$person2로 변수를 설정한다.

0

개체를 $ person1 및 $ person2로 설정하면 이라는 의미이므로 echo $ person1-> pre(); echo $ person2-> after();

0

person의 개체를 $person1$person2으로 만듭니다. 그러나 선언되거나 정의되지 않은 $dog1$dog2을 사용하여 함수를 호출합니다.

관련 문제