PHP模拟到C++;成员指针? PHP是否有类似C++成员指针的东西?我想使用PHP对象的一个成员,其名称(成员的,而不是对象的)我只在运行时知道。例如: $object = new stdClass(); $object->NewMember = "value"; $member = 'NewMember'; // I don't know whether this is valid PHP, // but you get what I'm trying to do. echo $object->$member;

PHP模拟到C++;成员指针? PHP是否有类似C++成员指针的东西?我想使用PHP对象的一个成员,其名称(成员的,而不是对象的)我只在运行时知道。例如: $object = new stdClass(); $object->NewMember = "value"; $member = 'NewMember'; // I don't know whether this is valid PHP, // but you get what I'm trying to do. echo $object->$member;,php,Php,不,PHP不支持(成员)指针。不管你怎么用 正如你在其他答案中看到的,你也可以写: class MyClass { ... } $method = 'doSth'; $obj = new MyClass(); $obj->$method('arg1', 'arg2'); 但是我真的不推荐那样做。它很棘手,晦涩难懂,调试和维护起来也困难得多。不,PHP不支持(成员)指针。不管你怎么用 正如你在其他答案中看到的,你也可以写: class MyClass { ... } $method

不,PHP不支持(成员)指针。不管你怎么用

正如你在其他答案中看到的,你也可以写:

class MyClass { ... }

$method = 'doSth';

$obj = new MyClass();
$obj->$method('arg1', 'arg2');
但是我真的不推荐那样做。它很棘手,晦涩难懂,调试和维护起来也困难得多。

不,PHP不支持(成员)指针。不管你怎么用

正如你在其他答案中看到的,你也可以写:

class MyClass { ... }

$method = 'doSth';

$obj = new MyClass();
$obj->$method('arg1', 'arg2');

但是我真的不推荐那样做。这是一个棘手的、模糊的、更难调试和维护的问题。

通过引用将$this作为变量传递,您可以访问该类的成员。

通过引用将$this作为变量传递,您可以访问该类的成员。

您可以在成员调用中使用变量

$methodName = 'some_method';
$myObj->$methodName($param);

不确定这是否能满足您的需要。

您可以在成员调用中使用变量

$methodName = 'some_method';
$myObj->$methodName($param);
<?php
class Test
{
    public $foo = 'bar';
}

$var = 'foo';

$test = new Test();
echo $test->$var;

不确定这是否能满足您的需要。

在下面的代码中,我正在运行时设置
$memberToGet

<?php
class Test
{
    public $foo = 'bar';
}

$var = 'foo';

$test = new Test();
echo $test->$var;
class Person
{
  public $foo = 'default-foo';
  public $bar = 'default-bar';
}

$p = new Person();

$memberToGet = 'foo';
print "The Person's $memberToGet is [" . $p->$memberToGet . "]\n";

$memberToGet = 'bar';
print "The Person's $memberToGet is [" . $p->$memberToGet . "]\n";

在以下代码中,我正在运行时设置
$memberToGet

class Person
{
  public $foo = 'default-foo';
  public $bar = 'default-bar';
}

$p = new Person();

$memberToGet = 'foo';
print "The Person's $memberToGet is [" . $p->$memberToGet . "]\n";

$memberToGet = 'bar';
print "The Person's $memberToGet is [" . $p->$memberToGet . "]\n";

我不要指针。我希望能帮助我实现在C++中用成员指针实现的东西。@克罗津:我只需要实现一个函数,它可以打印一个类似对象的数组到HTML表。在这种情况下,使用反射API会给我带来什么好处?@Eduardo León:在这种特殊情况下,它会使您的代码更冗长,更不复杂。而且处理错误应该更容易。@Crozin:我有一个很大的问题。我想调用的属性实际上是魔法属性。@Eduardo León:所以它们可能不应该是魔法属性。魔法是邪恶的,因为它使你的代码变魔术,而魔法代码很难理解和维护。魔法机制可以用于某种回退机制或保持向后兼容性。我不想要指针。我希望能帮助我实现在C++中用成员指针实现的东西。@克罗津:我只需要实现一个函数,它可以打印一个类似对象的数组到HTML表。在这种情况下,使用反射API会给我带来什么好处?@Eduardo León:在这种特殊情况下,它会使您的代码更冗长,更不复杂。而且处理错误应该更容易。@Crozin:我有一个很大的问题。我想调用的属性实际上是魔法属性。@Eduardo León:所以它们可能不应该是魔法属性。魔法是邪恶的,因为它使你的代码变魔术,而魔法代码很难理解和维护。魔法机制可以用于某种回退机制或保持向后兼容性。在变量名中添加一个符号,&,例如:&$this。然而,我使用的是内存,所以可能不完全准确。在变量名中添加一个符号,&,因此类似于:&$this。但是我是根据记忆来做的,所以可能不完全准确,它叫做记忆