PHP字符串到对象名称

时间:2010-05-02 23:52:51

标签: php string oop

好的我有一个字符串......

$a_string = "Product";

我想在调用这样的对象时使用这个字符串:

$this->$a_string->some_function();

狄更斯如何动态调用该对象?

(不要以为我在PHP 5上的心态)

6 个答案:

答案 0 :(得分:3)

所以你要使用的代码是:

$a_string = "Product";
$this->$a_string->some_function();

这段代码暗示了一些事情。一个名为Product的类,其方法为some_function()$this具有特殊含义,并且仅在内部类定义中有效。所以另一个类将有一个Product类的成员。

因此,为了使您的代码合法,这是代码。

class Product {
    public function some_function() {
        print "I just printed Product->some_function()!";
    }
}

class AnotherClass {

    public $Product;

    function __construct() {
        $this->Product = new Product(); 
    }

    public function callSomeCode() {
        // Here's your code!
        $a_string = "Product";
        $this->$a_string->some_function();
    }
}

然后你可以用它来调用它:

$MyInstanceOfAnotherClass = new AnotherClass();
$MyInstanceOfAnotherClass->callSomeCode();

答案 1 :(得分:1)

我似乎以不同于其他所有回复的人的方式阅读此问题,但您是否尝试使用variable variables

答案 2 :(得分:0)

编辑:您需要运行PHP5才能进行任何方法链接。在那之后,你拥有的是完全合法的。

答案 3 :(得分:0)

在您显示的代码中,看起来您正在尝试从字符串本身调用函数。我的猜测是你要从一个与该字符串同名的类中调用一个函数,在本例中为“Product”。

这就是这样:

$this->Product->some_function();

看起来你可能正在寻找这样的东西:

$Product = new Product();
$Product->some_function();

答案 4 :(得分:0)

让我们看看我的意图是否正确......

$some_obj=$this->$a_string;
$some_obj->some_function();

答案 5 :(得分:0)

所以你有一个对象,其中一个属性(称为“Product”)是另一个具有some_function()方法的对象。

这对我有用(在PHP5.3中):

<?PHP


class Foo {
     var $bar;
}

class Bar {
      function some_func(){
           echo "hello!\n";
      }
}

$f = new Foo();
$f->bar = new Bar();

$str = 'bar';

$f->$str->some_func(); //echos "hello!"

我没有PHP4,但是如果它不起作用,你可能需要使用call_user_func()(或者如果需要将参数传递给some_function()

,则需要使用call_user_func_array()