- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
class TestThis
{
public $property = 'property';
public function test1()
{
$this->this($this, new ArrayObject);
$this['wierd'] = true;
print_r($this);
print_r($this->property . PHP_EOL);
return $this;
}
public function test2()
{
print_r($this);
}
public function this(&$object, $value)
{
$object = $value;
}
}
(new TestThis)->test1()->test2();
Вопрос к самому похапе.
Так вот нельзя:
$this = че-нибудь
"Cannot re-assign $this"
А вот как выше можно!
А в чем вообще смысл этого действа?
а от таких изощрений уже не защитились.
Да и пускай бы делали. Это ж самый обычный аргумент функции.
Вот именно поэтому в жабе, питоне и прочих языках вообще не стали мутить передачу по ссылке.
То есть хеши копировать?
Тут просто или трусы снять или крест надеть уж
Безопасным было бы запретить конструкцию foreach($array as &$value) и вместо неё писать: foreach($array as $key=>$value), но тогда вместо короткого $value в левой части выражений придётся всюду писать $array[$key] (что было бы понятнее, но программистам это делать лень).
А почему value не сделали ссылкой по умолчанию?
Видимо, как раз из-за интересных последствий, которые показаны в том примере на ideone - скопов то нет, и $value = 'foo' после цикла поместит 'foo' в последний просмотренный циклом элемент массива...
Казалось бы, это тот самый случай, где ссылка и использование счётчика вне цикла оправданы... но всё равно говно, потому что можно сделать по-другому.
P.S. Ну почему я не обновил страницу перед отправкой комментария?
Потому что нормальных скопов нет :)
Ссылка может нас менять,
Ты другой, и я не та.
Значит нужно все начать
С нового инта.Какие -то ебанаты решили послушать глубокой ночью музончик на максимальной громкости. Хорошо что я еще спать не ложился.
ты тоже из сибирских руд нам тут пишешь?