2012-10-19 2 views
1

이상한 문제가 있습니다. 이것은, 어쨌든 다른 코드를 보여이 코드를 보면 클래스의 단지 생성자 방법, 가치가 없다 : 지금부터

Class xy { 
    public $x = 10; 
    public $y = 10; 

    public function __construct($x = NULL, $y = NULL) { 
     if(isset($x) || isset($y)){ 
      $this->x = $x;  // assign center coords 
      $this->y = $y;  // assign center coords 
     } 
     $this->area = $this->area(); 
     echo $this->x . " " . $this->y . " " . $this->area; 
    } 

} 

,이 코드는 $ this-> x와 $ this-> Y 에코해야한다고 생각 if(isset($x) || isset($y)){없이,이 코드로 객체 작성시 전달되지 않은 경우 : 하지만 그렇지 않습니다. 이 줄이 다음과 같이 보이는 경우에만 작동합니다 $newObj = new xy(10,10);

은 내가 년 동안 PHP를 사용을 haven`t,하지만 난 그게 $ NEWOBJ 같은 외모 = 새로운 XY()해야한다고 생각 도움과 설명 :

+1

'isset()'을'! is_null()'으로 바꾸면 도움이 될까요? – Passerby

+0

'$ x === NULL || $ this-> x = $ x;'두 번째 인수와 동일합니다. 기본값이 아닌 경우에만 설정하십시오. 당신은 논증마다 그렇게해야합니다. – hakre

+0

@Passerby,'isset'은 논리적으로'! is_null'과 같습니다 (반환 값은 모든 입력에 대해 동일합니다). – goat

답변

0

이 필요합니다;

+1

코드를 $ newObj = new xy()로 시도했습니다. 그것은 잘 작동합니다. –

+0

요점은, 제 생각에, 코드에서 6 번째와 9 번째 행없이 작동해야합니다, 그렇지 않아야합니까? – Rozkalns

0
change $newObj = xy(10,10); to $newObj = new xy(10,10);