在这篇文章中,我们将为您详细介绍PHP:将一个类变量声明为一个stdClass对象的内容,并且讨论关于php类中的变量也可以称为的相关问题。此外,我们还会涉及一些关于Java'class'文字如何为同
在这篇文章中,我们将为您详细介绍PHP:将一个类变量声明为一个stdClass对象的内容,并且讨论关于php类中的变量也可以称为的相关问题。此外,我们还会涉及一些关于Java'class'文字如何为同一个类返回Class对象的不同实例?、PHP / JSON – stdClass对象、PHP / JSON-stdClass对象、PHP stdClass对象,使用Constants访问的知识,以帮助您更全面地了解这个主题。
本文目录一览:- PHP:将一个类变量声明为一个stdClass对象(php类中的变量也可以称为)
- Java'class'文字如何为同一个类返回Class对象的不同实例?
- PHP / JSON – stdClass对象
- PHP / JSON-stdClass对象
- PHP stdClass对象,使用Constants访问
PHP:将一个类变量声明为一个stdClass对象(php类中的变量也可以称为)
所以,我经常做这样的事情
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对象的不同实例?
我的情况非常令人困惑,正在寻找任何想法。
我正在运行一个小型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对象
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等).我该怎么办?
例:
<?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对象
我对数组还很陌生。我需要一些帮助-我有一些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访问
现在,如果我使用它来访问它
$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访问的相关信息,请在本站寻找。
本文标签: