2011-07-04 4 views
6

PHP로 객체를 생성 할 수 있는지 궁금합니다. 나는 그것이 이전에 끝난 것을 보았다고 생각했다. 물론 변수에 할당 할 수는 있지만 가능하다면 궁금합니다.PHP로 변수를 지정하지 않고 즉시 객체를 생성하십시오.

new className()->someMethod(); 

당연히 문법 오류가 발생하므로 당연히 그렇게하지 않습니다 (가능하다면). 변수에 할당해야합니까? 실제로 그 일에 아무런 문제가 없기 때문에 제가 궁금 해서요?


몇 가지 추가 세부 정보. 정적 메소드는 PHPs ReflectionMethod 클래스를 위해 이것을하려고하는 클래스가 실제로 옵션이 아닙니다.

+6

'(새로운 className()) -> someMethod();'을 시도해 보셨습니까? – jerluc

+0

@ jerluc : 작동하지 않습니다. – zerkms

+0

그래, 그 중 하나가 제 루루처럼 작동하지 않습니다. –

답변

1

이것은 개체를 인스턴스화하는 데 싱글 톤 패턴을 사용하는 경우에만 작동합니다. 싱글 톤 패턴을 구현하는 방법을 모르는 경우 웹에서 검색해야합니다. 그러나이 방법은 작동합니다 : zerkms에서 언급 한 바와 같이 공장 출하 방법도 가능할 것이다

className::getInstance()->someMethod(); 

편집 : PHP에서 현재

class ReflectionFactory 
{ 
    public static function factory($arguments) 
    { 
     return new ReflectionClass($arguments); 
    } 
} 

// Then in your code for example 
ReflectionFactory::factory()->getConstants(); 
+1

+1 이것은 선호되는 방법입니다. 그러나 이것은 싱글 톤이 OP의 상황에 적절하다는 가정 하에서 만 사실입니다. – jerluc

+0

이 방법은 훌륭하지만 PHP ReflectionMethod 클래스에서이 작업을 수행하려고 시도하고 있으므로 불가능합니다. –

+2

@jerluc : 적절하지 않은 경우 - 공장에서 대체 할 수 있습니다. – zerkms

0

는 새로운 객체를 생성 할 수 없습니다 하나의 표현식에서 메소드를 호출합니다.

분명히 이전에 변수에 할당해야합니다.

+0

오 잘 그것은 가치가 있었다. :) –

0

클래스의 인스턴스를 변수에 저장하지 않고 클래스에 정적 메서드를 사용할 수 있습니다.

class testClass{ 
    public static function staticMethod(){ 
     echo "Static method"; 
    } 
} 

testClass::staticMethod(); 
-1

PHP가 생성자의 체인을 허용하지 않는 이유를 알지 못합니다. 이 작업을 정말로 수행해야하는 경우 아래에서 필요한 조정을 시도해보십시오.

<?php 
class A { 
    public function b() 
    { 
    echo "a->B is called"; 
    } 
    public static function factory() 
    { 
    return new self; 
    } 

} 
$a = A::factory()->b(); 
?> 
9

이 사용법은 Java에서는 일반적이지만 PHP 5.3보다 먼저 사용할 수 없습니다. 이제는 PHP 5.4의 새로운 기능입니다. Pls check PHP 5.4 new features. 그리고 사용법은 다음과 같아야합니다 :

(new Foo)->bar() 
+0

이것은 (지금) 정답입니다. – James

+0

놀라운! 모든 단일 클래스에 대해'create()'를 쓸 필요가 없습니다! – zjuwujunchao

관련 문제