1

大家好,我在这里和 oophp 都是菜鸟。

我正在寻找从另一个类更新现有对象状态。

所以在主文件中我有......

$obj1 = new class1();
$obj2 = new class2();

在class1中我有我改变对象状态的setter方法。

我正在寻找的东西,从class2的现有方法中是这样的......

$obj1->updateName('Bob');

静态方法不好,因为稍后我必须与相同的对象状态相关。

这是一个单页示例....

class class1(){

    private $name = '';

    public function updateName($nameIn){
        $this->name = $nameIn;
    }

}

class class2(){

    public function someFuntion(){

        //OTHER CODE//

        $obj1->updateName('Bob');
    }
}


$obj1 = new class1();
$obj2 = new class2();

$obj2->someFuntion();

希望这有点道理。

4

2 回答 2

0

你总是可以$obj1作为参数传递给 someFunction。

class class1(){
    private $name = '';

    public function updateName($nameIn){
        $this->name = $nameIn;
    }
}

class class2(){
    public function someMethod(class1 $class){
        $class->updateName('Bob');
    }
}


$obj1 = new class1();
$obj2 = new class2();

$obj2->someMethod($obj1);
于 2012-12-18T15:32:13.480 回答
0

您必须$obj1作为参考传递class2::someFunction()

class class2(){

    public function someFunction(&$obj1){

        //OTHER CODE//

        $obj1->updateName('Bob');
    }
}

$obj1 = new class1();
$obj2 = new class2();

$obj2->someFunction($obj1);

请注意,通过引用传递的指令是someFunction定义的一部分,通过在参数前面加上&.

http://php.net/manual/en/language.references.pass.php

于 2012-12-18T15:33:16.217 回答