ORM*_*ORM 13 php syntax language-features
$user->Phonenumbers[]->phonenumber = '123 123';
$user->Phonenumbers[]->phonenumber = '456 123';
$user->Phonenumbers[]->phonenumber = '123 777';
Run Code Online (Sandbox Code Playgroud)
我从未见过这种语法
编辑
这似乎更像是一个功能,你们知道我怎么能实现这样的功能?
似乎以下内容创建了一个带有属性phonenumber的stdClass对象并将其推送到数组中:$user->Phonenumbers
$user->Phonenumbers[]->phonenumber = 12345;
Run Code Online (Sandbox Code Playgroud)
我也从未见过这种语法.
Gumbo是对的,这是一个有效的例子:
<?php
class Test
{
public $arr = array();
public $obj = null;
}
$a = new Test();
$a->arr[]->foo = 1234;
$a->arr[]->bar = 'test';
var_dump( $a->arr );
// even more weird on null objects
$a->obj->foobar = 'obj was null!';
var_dump( $a->obj );
Run Code Online (Sandbox Code Playgroud)
收益:
array(2) {
[0]=>
object(stdClass)#2 (1) {
["foo"]=>
int(1234)
}
[1]=>
object(stdClass)#3 (1) {
["bar"]=>
string(4) "test"
}
}
object(stdClass)#4 (1) {
["foobar"]=>
string(13) "obj was null!"
}
Run Code Online (Sandbox Code Playgroud)
编辑:好的,我在php手册中找到了与此相关的内容:
如果将对象转换为对象,则不会对其进行修改.如果将任何其他类型的值转换为对象,则会创建stdClass内置类的新实例.如果值为NULL,则新实例将为空.(来源)
因此,使用->语法将事物转换为对象.在上面的示例中$obj为null,因此创建了一个新的空实例,并foobar设置了该成员.
查看数组示例时,arr[]首先创建一个新的(空)数组元素,然后由于->语法和成员变量的设置而将其转换为空对象.
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |