2011-08-31 6 views
0

어떻게 클래스 B 함수 C 안에 $ this-> ob-> getVar() 메소드를 실행할 수 있습니까? 나는 안돼. 문자열을 생성자로 전달해야합니까?클래스 A와 B 사이에 변수를 전송하십시오.

<?php 


class A{ 

    public $tabb = array('1'=>'one', '2'=>'two'); 
    public $index; 

    public function setVar($v){ 

    $this->index = $v; 

    } 

    public function getVar(){ 

    return $this->index; 

    } 

    public function arr(){ 

    return $this->tabb; 

    } 

} 


class B{ 

    public $tab; 

    public function __construct($var){ 

    $this->ob=new A; 

    $this->tab = $var; 

    } 

    public function C(){ 

    return $this->D($this->tab, $this->ob->getVar()); 

     } 

    public function D($l, $j){ 

    if(is_array($l) && isset($j)){ 

     print 'yes'; 

    } else { 

    print 'no'; 

    } 

    } 

} 

$obb = new A; 
$obb->setVar('onetwo'); 
$k = $obb->arr(); 
$obbb = new B($k); 
$obbb->C(); 


?> 
+0

해당 메소드에서'$ this-> ob-> getVar()'를 호출하십시오. 이 코드는 완벽하게 유효합니다 – zerkms

+0

같은 효과는 단지 생성자에 대한 배열 전송을 가지고 있습니다 – xyz

답변

1

첫째, 대회를 위해 당신의 B 클래스는 $ OBJ의 개인 변수를 선언해야한다,하지만 PHP에 필요하지 않습니다.

둘째, B 클래스는 생성자에 A의 새 인스턴스를 만들기 만합니다. 따라서 두 개의 서로 다른 A 클래스가 있습니다. 한 번 B 내부에는 인덱스 속성이 채워지지 않습니다. 당신이 B 객체 외부에서 만든은 A 개체가하고 싶었다면

이처럼에 통과해야합니다 :

public function __construct($var, $someObject){ 

    if (!empty($someObject)) { 
     $this->ob = $someObject; 
    } 
    else { 
     $this->ob=new A; 
    } 

    $this->tab = $var; 

} 
:
$obbb = new B($k, $obb); 

는 이제 새로운 B 생성자는이 같은 것입니다
+0

내가 참조를 사용할 수있는 감사, 여기에 상속, getInstance 메서드를 사용할 수 있습니까? – xyz

+0

이 작업이지만 여전히 생성자에서 변수를 전송합니다.) – xyz

+0

다른 방법을 배우게됩니다 – xyz

관련 문제