2013-01-19 1 views
0

C++에서 가능한지 여부는 궁금합니다.PHP- 클래스 용 구문

클래스가 액세스하고 내 가끔 클래스 (객체)와 메소드를 참조 PHP (프레임 워크)에서 내 프로그램 중 하나에서

$this->encrypt->decode($msg, $key); 

나는 다음과 같은 한 :

Directory *d = new Directory("dir"); 
d->open(); 

인가 대신 가지고있을 수 있습니다 :

Directory *d = new Directory("dir")->open(); 

그래서 두 개의 메소드가 같은 줄에서 실행될 수 있습니까?

+1

'디렉토리 ("DIR") .open();'하지만 변수 선언을 거기에 넣을 수는 없습니다. – chris

+0

사실, 기술적으로'open '을'Directory d (Directory ("dir) .open()); 불필요하게 사용하기 위해'* this'를 반환 할 수 있습니다, – chris

답변

1

PHP 코드 $this->encrypt->decode($msg, $key);는 현재의 클래스 내에서 encryptdecode() 방법을 호출로 돌아왔다.

코드는 클래스를 초기화하고 호출하는 다른 작업을 수행하고 있습니다. 당신이 PHP에서이 작업을 수행 할 수있는 같은 방법으로

는 :

$test = new Test()->method(); 

.. 당신은 아니, 하나 ++ C에서 그것을 할 수 없습니다. 이 경우 Test의 인스턴스가 $test에있을 것으로 예상하지는 않지만 새로 인스턴스화 된 테스트 개체에 method()이 반환됩니다.

말했다

, 당신은 단지 open() (또는 전혀 아무것도)의 반환 값을 필요한 경우 당신이 말하는 것처럼 당신이 정말로 그것을 인라인 수없는 Directory의 인스턴스 :

Directory("dir").open(); 
+0

답장을 보내 주셔서 감사합니다 :) 그렇다면 "새로운 인스턴스를 만드는 대신에 나쁜 예가 될 것입니다. (내 부분에서는) – Phorce

+0

@Phorce는 가능한 한 @Phorce 여야합니다. open()'은 자신의 인스턴스를 리턴했지만 여전히 PHP 예제는 다릅니다. –

1

아니요. Directory 클래스가이를 명시 적으로 지원하도록 설정하지 않은 이상 불가능합니다. 이것은 대개 클래스의 대부분의 메소드가 자체에 대한 참조를 리턴하도록하여 메소드 호출을 함께 연결할 수있게합니다.

PHP 예제는 완전히 다릅니다. 당신이 될 것이다 게시 된 예제의 C++ 버전 :

Directory("dir").open(); 

디렉토리 인스턴스없이 캡처는 Directory("dir")