2011-03-16 4 views

답변

6

셔플을 생성자 내부에 포함하도록 변경하면 잘 작동합니다.

class greeting { 

    public $greet = array('hi','hello'); 

    function __construct(){ 
    shuffle($this->greet); 
    } 
} 
+2

또한 생성자에 넣은 후에도 여전히 * 보이지 않을 수도 있지만주의해야합니다. 배열에 2 개의 항목 만 있고 동일한 원래 순서로 섞여 있기 때문입니다. –

+0

솔루션을 제공해 주셔서 감사합니다. 설명을 통해 왜 그런 식으로 끝내야하는지 더 잘 이해할 수 있습니다. – Aaron

+1

@Matthew 코드가 클래스에서 실행되는 것은 반드시 메소드 내에 있어야합니다. '__construct'는 객체 생성시 호출되는 메소드의 이름입니다. 자세한 내용은 OOP의 PHP 매뉴얼 섹션을 확인하는 것이 좋습니다. – mfonda

1

모든 계산은 메소드 내부, 클래스 외부에서 수행 될 수 없습니다.

class greeting { 
    public $greet = array('hi','hello'); 
    function __construct() 
    { 
    shuffle($this->greet); 
    } 
} 

$hi = new greeting; 
echo $hi->greet[1]; 
1

클래스 블록에서는 상수, 속성 (고정 값과 함께) 및 메서드 만 정의 할 수 있습니다. 그 블록에 코드를 넣을 수는 없으며, 코드는 메소드 (AKA 함수) 내부에만 배치 할 수 있습니다.

+0

왜 코드를 해당 블록에 배치 할 수 없습니까? 그걸 정리 해줘서 고마워. – Aaron

+1

클래스 정의는 코드를 실행하지 않아야하기 때문에 클래스 정의는 해당 구성 요소를 정의하는 것입니다. 메소드 내에서 코드가 실행됩니다. 객체를 만들 때 실행할 코드가 필요하면 @laurencek 제안과 같이 생성자에 코드를 넣으십시오. –

관련 문제