所以我知道引用不是指针:http://php.net/manual/en/language.references.arent.php
问题是,是否可以在php中使用指针?
举下面的例子,我想这就是我们在处理对象时所做的:
class Entity
{
public $attr;
}
class Filter
{
public function filter(Entity $entity)
{
$entity->attr = trim($entity->attr);
}
}
$entity = new Entity;
$entity->attr = ' foo ';
$filter = new Filter;
$filter->filter($entity);
echo $entity->attr; // > 'foo', no white space
上面的例子是处理sceen后面的指针,还是仍然在交换内存,就像处理引用一样?
编辑
一个不同的例子:
是否如下:
class Entity
{
public $attr;
}
$entity = new Entity;
$entity->attr = 1;
$entity->attr = 2;
C中的类似内容:
int* attr;
*attr = 1;
*attr = 2;
当您将对象作为参数传递给函数时,变量本身会被复制,但其属性指向原始对象的属性,即:
function test(Something $bar)
{
$bar->y = 'a'; // will update $foo->y
$bar = 123; // will not update $foo
}
$foo = new Something;
$foo->y = 'b';
test($foo);
// $foo->y == 'a';
在函数内部,内存引用看起来有点像这样:
$bar ---+
+---> (object [ y => string('b') ])
$foo ---+
在$bar = 123;
之后,它看起来像这样:
$bar ---> int(123)
$foo ---> (object [ y => 'b' ])
如果您在这一行中询问
$entity->attr = trim($entity->attr);
CCD_ 2是新存储器或旧存储器的参考。它是旧内存(或指针)的引用