GVKun编程网logo

PHP:将一个类变量声明为一个stdClass对象(php类中的变量也可以称为)

12

在这篇文章中,我们将为您详细介绍PHP:将一个类变量声明为一个stdClass对象的内容,并且讨论关于php类中的变量也可以称为的相关问题。此外,我们还会涉及一些关于Java'class'文字如何为同

在这篇文章中,我们将为您详细介绍PHP:将一个类变量声明为一个stdClass对象的内容,并且讨论关于php类中的变量也可以称为的相关问题。此外,我们还会涉及一些关于Java'class'文字如何为同一个类返回Class对象的不同实例?、PHP / JSON – stdClass对象、PHP / JSON-stdClass对象、PHP stdClass对象,使用Constants访问的知识,以帮助您更全面地了解这个主题。

本文目录一览:

PHP:将一个类变量声明为一个stdClass对象(php类中的变量也可以称为)

PHP:将一个类变量声明为一个stdClass对象(php类中的变量也可以称为)

这可能很简单,但是我无法弄清楚如何对Google的问题进行说明,所以这里:

所以,我经常做这样的事情

class foo {
    private $bar = array();
}

…将某些类属性设置为数组.但是,我想使一个私人财产成为一个对象,而这样的东西:

class foo {
    private $bar = new stdClass();
}

我尝试了几个这样的变化,没有一个工作.这可以做吗对于奖金积分,您可以将私有财产分配为任何其他类别的对象吗?

谢谢!

您不能在类成员声明中使用函数(包括构造函数).而是在类的构造函数中设置它.
class Foo {

  private $bar;

  private $baz;

  public function __construct() {

    $this->bar = new stdClass();
    $this->baz = new Bat();

  }

  public function __get($key) {
      if(isset($this->$key) {
        return $this->$key;
      }

      throw new Exception(sprintf('%s::%s cannot be accessed.',__CLASS__,$key));
  }

}


$foo = new Foo();

var_dump($foo->bar);
var_dump($foo->bat);

当你扩展类并需要覆盖构造函数,但是仍然希望在父类构造函数中的东西:

class FooExtended
{
   protected $coolBeans;

   public function __construct() {

      parent::__construct(); // calls the parents constructor

      $this->coolBeans = new stdClass();
   }
}

$foo = new FooExtended();

var_dump($foo->bar);
var_dump($foo->bat);
var_dump($foo->coolBeans);

还应该注意的是,这与属性的可见性无关,无论是受保护的,私有的还是公共的.

Java'class'文字如何为同一个类返回Class对象的不同实例?

Java'class'文字如何为同一个类返回Class对象的不同实例?

我的情况非常令人困惑,正在寻找任何想法。

我正在运行一个小型Spring MVC应用程序,在其中使用了控制器“ AnsController ”上的RequestMapping批注。当RequestDispatcher在我的bean上扫描RequestMapping批注时,有时会归结为这一行:

clazz.getAnnotation(RequestMapping.class)(clazz = AnsController.class)

即使在上面的行也找不到注释。

我开始在Eclipse调试器中对此进行调查,发现了一个非常令人困惑的问题。上一行失败的原因是b / c RequestMapping.class返回了一个Class对象,该对象似乎描述了正确的批注,但是内部ID和hashCode与存储在AnsController.class批注数组中的Class对象不同。

我编写了一个测试servlet,在其中放置了上面的代码行,并且可以看到存储在注释数组中的Class和RequestMapping.class返回的Class是同一对象。

但是在RequestDispatcher Servlet中,RequestMapping.class似乎为相同的注释实例化了Class的另一个实例(我可以告诉b / c内部ID远高于注释映射中Class对象的ID )。

换句话说,与在RequestDispatcher Servlet中调用完全相同的代码相比,在我的Test Servlet中调用RequestMapping.class会导致不同的Class对象。

假设正在使用相同的类加载器,这是否有可能?是否有足够的证据得出这样的结论,即应该由不同的类加载器生成应该代表一个同一个批注的Class对象的这些不同实例?

我找不到任何书面形式可以证实我的假设,即每个类只允许一个Class对象实例,但这似乎是合理的……还是我错了吗?

答案1

小编典典

似乎是合理的,是的,但是不幸的是,它并不总是那样工作。答曰Java语言规范 :

在运行时,Java虚拟机使用类加载器加载类和接口。每个类加载器定义自己的一组类和接口。结果,两个加载程序有可能加载相同的类或接口定义,但在运行时生成不同的类或接口。

PHP / JSON – stdClass对象

PHP / JSON – stdClass对象

我还不清楚数组.我需要一些帮助 – 我有一些 JSON,我已经通过一些基本上解析JSON并且解码它的 PHP来运行它,如下所示:
stdClass Object
(
    [2010091907] => stdClass Object
        (
        [home] => stdClass Object
            (
                [score] => stdClass Object
                    (
                        [1] => 7
                        [2] => 17
                        [3] => 10
                        [4] => 7
                        [5] => 0
                        [T] => 41
                    )

                [abbr] => ATL
                [to] => 2
            )

这实际上是继续的 – 但是 – 我的问题是stdClass对象部分.我需要能够在for循环中调用它,然后遍历每个部分(home,score,abbr,to等).我该怎么办?

您可以使用get_object_vars()获取对象属性的数组,或者使用json_decode($string,true)调用json_decode();获取关联数组.

例:

<?PHP
$foo = array('123456' =>
 array('bar' =>
        array('foo'=>1,'bar'=>2)));


//as object
var_dump($opt1 = json_decode(json_encode($foo)));

echo $opt1->{'123456'}->bar->foo;

foreach(get_object_vars($opt1->{'123456'}->bar) as $key => $value){
    echo $key.':'.$value.PHP_EOL;
}

//as array
var_dump($opt2 = json_decode(json_encode($foo),true));

echo $opt2['123456']['bar']['foo'];

foreach($opt2['123456']['bar'] as $key => $value){
    echo $key.':'.$value.PHP_EOL;
}
?>

输出:

object(stdClass)#1 (1) {
  ["123456"]=>
  object(stdClass)#2 (1) {
    ["bar"]=>
    object(stdClass)#3 (2) {
      ["foo"]=>
      int(1)
      ["bar"]=>
      int(2)
    }
  }
}
1
foo:1
bar:2

array(1) {
  [123456]=>
  array(1) {
    ["bar"]=>
    array(2) {
      ["foo"]=>
      int(1)
      ["bar"]=>
      int(2)
    }
  }
}
1
foo:1
bar:2

PHP / JSON-stdClass对象

PHP / JSON-stdClass对象

我对数组还很陌生。我需要一些帮助-我有一些JSON,并且已经通过一些PHP对其进行了运行,这些PHP基本上可以解析JSON并对其进行解码,如下所示:

stdClass Object
(
    [2010091907] => stdClass Object
        (
        [home] => stdClass Object
            (
                [score] => stdClass Object
                    (
                        [1] => 7
                        [2] => 17
                        [3] => 10
                        [4] => 7
                        [5] => 0
                        [T] => 41
                    )

                [abbr] => ATL
                [to] => 2
            )

实际上,这种情况一直持续发生-但是-我的问题是这一stdClass Object部分。我需要能够在for循环中调用此函数,然后遍历每个部分(主页,得分,缩写,到等)。我将如何处理?

PHP stdClass对象,使用Constants访问

PHP stdClass对象,使用Constants访问

响应以 JSON格式接收,$requestBody保存json响应.该类的类型是stdclass.

现在,如果我使用它来访问它

$myCar=$requestBody->Car;

$myCar中的值是“Alpha”.到现在为止还挺好.

我定义了一个常量,如“MyConstants.PHP”中定义的

define("ITEM1","Car");

所以,我试图使用Constant从$requestBody访问值.但我没有.代码在下面的“index.PHP”中列出

<?PHP 

include 'MyConstants.PHP';

//Works 
$key=constant("ITEM1");
$carStr=$requestBody->key;

//Does not work 
$carStr2=$requestBody->constant("ITEM1");
?>

解决方法

请尝试以下方法:

$requestBody->{ITEM1}

您可能还会考虑将json解码为数组:

$requestBody = json_decode($json,true);
$requestBody[ITEM1];

关于PHP:将一个类变量声明为一个stdClass对象php类中的变量也可以称为的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Java'class'文字如何为同一个类返回Class对象的不同实例?、PHP / JSON – stdClass对象、PHP / JSON-stdClass对象、PHP stdClass对象,使用Constants访问的相关信息,请在本站寻找。

本文标签: