在A和B类之间传递变量

时间:2011-08-31 00:33:24

标签: php

我如何在B类函数C中运行方法$ this-> ob-> getVar()?我没有。我必须将字符串传递给构造函数吗?

<?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();


?>

1 个答案:

答案 0 :(得分:1)

首先,为了约定,你的B类应该声明一个$ obj的私有变量,但这在PHP中是不必要的。

其次,你的B类只是在它的构造函数中创建一个新的A实例。所以你有两个不同的A类。一旦进入内部B,就不会填充其索引属性。

如果你想在B对象之外创建A对象,你必须像这样传递它:

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

所以现在你的新B构造函数是这样的:

public function __construct($var, $someObject){

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

    $this->tab = $var;

}