2010-01-27 5 views
0

는 아래와 같은 몇 가지 임의의 클래스가 있다고 가정 내 이전 질문, 나는 강한 자바 배경에서 온다 변수를 함께 연결할 수 있습니다 System.out.println() 다른 개체 메서드를 호출합니다. PHP에서 가능한지 알고 싶습니다.저장 객체

+0

이라고 할 수있다. –

답변

3

네, 틀림없이이 예제를 참조하십시오.

class Foo { 
public function hello() { 
    return 'hello world'; 
} 
} 

class Bar { 
public $driver = NULL; 

public function __construct() { 
    $this->driver = new Foo; 
} 
} 

$test = new Bar; 
echo $test->driver->hello(); 

일부 다른 의견

return($foovar); 
  • 는 괄호는 여기에 필요하지 않습니다. 이 경우는 예를 public $foovar;를 들어, self::$foovar

클래스 멤버는 해당 액세스 유형을 지정된해야합니다입니다, 정적 않는

  • 당신은 (반원들과 함께 작업 할 $this->foovar을 사용해야합니다.

    당신이 이동하고 왜 Java에서 PHP까지 나를 넘어선, 행운을 빌어 요.

  • +0

    자바가 훌륭하기 때문에 움직이기는하지만 웹 개발의 많은 부분에서 PHP를 완벽하게 적용하고 있습니다. –

    1

    가장 확실하게 가능합니다.

    0

    $B$F가 공개 또는 $F 다음 $B->F->getFoo() 잘 작동 반환 할 의사가 바에서 __get($var) 방법이있는 경우.

    1

    매우 일반적 일뿐만 아니라 매우 일반적입니다. 한 번 사용하면 표시됩니다 delegation입니다.

    0

    예,하지만 몇 가지 추가 구문이 있습니다. 나는 게터 메소드를 사용하여 조금 더 나은 것을 희망적으로 보여 주었지만 클래스에서 변수를 공개하면 필요하지 않습니다.

    <?php 
    class Foo 
    { 
        private $foovar; 
    
        public function __construct() 
        { 
         $this->foovar = "Foo"; 
        } 
    
        public function getFooVar() 
        { 
         return $this->foovar; 
        } 
    } 
    
    class Bar 
    { 
        private $fooclass; 
    
        public function __construct() 
        { 
         $this->fooclass = new Foo(); 
        } 
    
        public function getFoo() 
        { 
         return $this->fooclass; 
        } 
    } 
    
    
    $bar = new Bar(); 
    print $bar->getFoo()->getFooVar(); 
    ?> 
    
    0

    물론 그 고객의 예는 * 객체 * (클래스 인스턴스)이 아닌 * 클래스 *를 저장해 체인 방법을

    // first clean your code 
    
    class Foo 
    { 
        public $foovar = NULL; 
    
        public function __construct() 
        { 
         $this->foovar = "Foo"; 
         return $this; 
        } 
    
        public function getFoo() 
        { 
         return $this->foovar; 
        } 
    } 
    
    class Bar 
    { 
        public $F = NULL; 
    
        public function __construct() 
        { 
         $this->F = new Foo(); 
         return $this; 
        } 
    } 
    
    $B = new Bar(); // create the object. The constructor returns the whole object 
    // so we have full access to the methods 
    // firs call the object $B which return in the constructor $this so we call now 
    // method F now the object F returns also in the constructor the whole object $this 
    // we now can access the method getFoo() which will print Foo 
    echo $B->F->getFoo(); 
    
    +0

    처음에 $ foovar를 NULL로 설정하는 이유는 무엇입니까? –

    +0

    왜냐하면 나는 모든 값을 기본값으로 초기화하기 때문에; 그것의 필요한 것은 아니지만 나는 – streetparade

    관련 문제