【问题标题】:How to get name of a initializer variable inside a class in PHP [duplicate]如何在PHP中的类中获取初始化变量的名称[重复]
【发布时间】:2015-01-08 22:53:02
【问题描述】:

我想知道,在 PHP 中是否可以(是否使用反射)在本示例的类方法中获取变量名称 abc

class Example
{
   public function someMethod()
   {
     // once this method is called, I want it to echo `abc` in this example
   }

}

现在,当我使用像

这样的变量名调用方法时
$abc= (new Example)->someMethod(); 
echo $abc;  // abc

我想看到变量的名称,'foo' 显示,换句话说,当返回方法内容时,类必须知道变量名称。

【问题讨论】:

  • 您希望对象知道分配给它的变量的名称吗?
  • 如果你这样做$abc = (new Example)->someMethod(); $def = &$abc; echo $def;甚至$abc = (new Example)->someMethod(); $def = &$abc; unset($abc); echo $def;,你期望得到什么回应
  • 我认为这是不可能的。如果是$abc = array($example->someMethod()),它会回响什么?
  • @Barmar 它会回显abc 实际上,它 as shown here 只是想知道是否有更简单的方法。
  • 你说你想看到变量名 foo 但之前没有提到foo。那么你到底想在这里实现什么?能给个用例吗?

标签: php oop


【解决方案1】:

如果需要,我总是传入变量的名称

class myclass {
    var $myname;
   function __construct($myname='no name') {
       $this->myname=$myname;
    #print "In BaseClass constructor\n";
   }

  function sayHello()
    {
    return "hello from " . $this->myname . "\n";
    }

}

用法:

$myVar = new myclass("myVar");
$yourVar = new myclass("yourVar");

echo $myVar->sayHello();
echo $yourVar->sayHello();

【讨论】:

  • 谢谢,但这只是 1 级 PHP 开发人员会做的事情。如果您在我的问题中看到,我要求可能的答案涉及Reflection,如果我想将它作为参数传递,那就太容易了。
  • 我认为 php 是为 1 级程序员准备的。我的意思是一个方形轮子可以工作,但是......
  • @SoyF.Elmono 也许吧。但是你不能比较只使用 PHP 的人,因为一个人可能是专家,另一个人可能是初学者。我都不是,所以这个答案对我来说似乎是菜鸟
  • 似乎stackoverflow.com/questions/19135959/… - 他们也是这样做的。也许不是那么菜鸟?
猜你喜欢
  • 2015-03-10
  • 2014-12-23
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2012-02-19
  • 1970-01-01
相关资源
最近更新 更多