2011-06-13 3 views
1

그래서 저는 때때로 사람들이 괄호를 사용하고 때로는 클래스의 인스턴스를 객체로 선언 할 때 괄호를 사용하지 않는다는 것을 이해합니다.

인수없이 클래스를 선언하고 인수를 확장하면 초기 클래스에 괄호가 있어야합니까?()

$ 인 myObject = 클론 클래스 이름; 또한

, I는 브래킷 클래스 등이없이 특정 변수 또는 변수 선언 기준을 가질 수있다

그리고 클래스에 대한 매개 변수를 사용 ....

클래스 사용자의 ($ PARAM, $의 PARAM2)

또는 클래스 이제까지도 매개 변수를 사용합니까? 제 책에 매개 변수를 사용하는 클래스의 예가 없기 때문에 저는 잘 모르겠습니다 ...

답변

2

그 매개 변수,

$myObject = new ClassAwesome($param1, $param2); 

은 클래스 선언에 해당하지 말아 예를 들어, 그들은 생성자와 관련이 있습니다. 예 :

//this is how you declare a class, there will not be a parenthesis here 
class ClassAwesome { 

    //here is where the parameters are used when you instantiate a class 
    public function __construct($param1, $param2) { 
     //init code goes here 
    } 
} 

그래서 기본적 이유는 매개 변수로 클래스 선언을 참조하지 말아은 존재하지 말아 때문에 매개 변수가 어디로 클래스의 생성자입니다.

6

먼저 clone 대신 new을 사용한다고 가정합니다. PHP는 클래스를 생성 할 때 괄호를 사용할 것을 요구하지 않습니다.

class Foo { } 

$foo = new Foo; 
$foo = new Foo(); 

두 가지 모두 유효합니다.

보내시는 인수는 __construct 함수로 전달됩니다. 이 함수 (존재하는 경우)는 객체를 만들 때 자동으로 호출됩니다. 생성자는 인수를

Hello, World! 

당신은 어떤을 전송하지 않는 경우, 다음 오류 (경고)입니다 :를 출력이

class Foo 
{ 
    public function __construct($n) 
    { 
    echo "Hello, $n\n"; 
    } 
} 

$foo = new Foo("World!"); 

.

__construct에는 매개 변수가 필요하지 않습니다. 매개 변수없이 단순히 뭔가를하는 생성자를 갖는 것은 유효합니다.

+0

때때로 클래스의 인스턴스가 매개 변수로 호출되는 이유가 궁금합니다. 생성자에 매개 변수가있는 경우 객체를 호출 할 수 있습니다. ... –

+0

생성자에 선택적 매개 변수가없는 경우 객체를 만들 때 매개 변수를 전달해야합니다. – Matthew

+0

@Matthew'$ foo = new Foo;와 '$ foo = new Foo();의 차이점은 무엇입니까? – kisanme

관련 문제