
Sergey
07.08.2016
11:25:39
Видимо значения свойств внутри объектов передаются только копированием

Владимир
07.08.2016
11:28:38
Полагаю, странным было бы иное поведение

Mikhail
07.08.2016
11:47:32
Если свойство - объект то по ссылке опять же

Sergey
07.08.2016
11:48:36

Google

Sergey
07.08.2016
11:49:17
Если свойство объект, то по значению
Я тоже еще 20 минут назад думал, что по ссылке все объекты передаются, если явно не указано другое
Но хер )

Mikhail
07.08.2016
11:55:51
Начиная с PHP 5 объектная переменная больше не содержит сам объект как значение. Такая переменная содержит только идентификатор объекта, который позволяет найти конкретный объект при обращении к нему.
Дома буду надо будет затестить.
Не скажешь на какой версии такое поведение?

Sergey
07.08.2016
11:56:48
class B {
public $val = 10;
}
class A {
private $var1 = null;
public function __construct() {
$this->var1 = new B();
}
public function delete() {
$tmp = $this->var1;
$tmp = null;
}
public function debug() {
echo "<pre>";
print_r($this->var1);
echo "</pre>";
}
}
$A = new A();
$A->debug();
$A->delete();
$A->debug();
вот пример
PHP 5.5.9

Mikhail
07.08.2016
11:57:38
Конечно не работает
Ты затираешь ссылку же
tmp и var1 это две разные переменные, которые ссылаются на один экземпляр класса
Или херню несу, ещё не спал

Google

Sergey
07.08.2016
12:01:42
Когда объект передается как аргумент функции, возвращается или присваивается другой переменной, то эти разные переменные не являются псевдонимами (алиасами): они содержат копию идентификатора, который указывает на один и тот же объект.
да, блин
надо явно передавать ссылку
Бля
)
я запутался )
всё
я понял
я пытался осознавать ссылку в PHP точно также как в Си
а это несовсем верно

Mikhail
07.08.2016
12:04:07
ideone.com/xdL8pc
Вот пример

Sergey
07.08.2016
12:04:45
да

Mikhail
07.08.2016
12:04:47
Используй unset, вместо null
Должно помочь, для удаления(но не факт)

Sergey
07.08.2016
12:05:08
никакой разницы
потому что ссылки в php работают не как в си
Ссылка в PHP это псевдоним (алиас), который позволяет присвоить двум переменным одинаковое значение. Начиная с PHP 5 объектная переменная больше не содержит сам объект как значение. Такая переменная содержит только идентификатор объекта, который позволяет найти конкретный объект при обращении к нему. Когда объект передается как аргумент функции, возвращается или присваивается другой переменной, то эти разные переменные не являются псевдонимами (алиасами): они содержат копию идентификатора, который указывает на один и тот же объект.

Mikhail
07.08.2016
12:06:24
Ссылки работают так же. Не стоит путать с указателями в си

Sergey
07.08.2016
12:06:32
class B {
public $val = 10;
}
$var1 = new B();
$var2 = $var1;
print_r($var1); //Напечатает объект
unset($var2);
print_r($var1); //Напечатает объект
exit;

Google

Mikhail
07.08.2016
12:06:37
Кстати в си нет ссылок. Они есть в с++

Sergey
07.08.2016
12:07:20
$var1 - это, судя по определению, конкретный объект
ну всмысле да, суказателями я и спутал
а $var2 - содержит только индетификатор, по которому я нахожу $var1
соответственно менять я его могу
а удалить - хер, т.к. при $var2 = null или unset($var2) я просто удаляю идентификатор
а конкретный объект остается нетронутым

Mikhail
07.08.2016
12:14:00
Unset работает на объекты
Не веришь - проверь через деструктор

Sergey
07.08.2016
12:14:25
class B {
public $val = 10;
}
$var1 = new B();
$var2 = $var1;
print_r($var1); //Напечатает объект
unset($var2);
print_r($var1); //Напечатает объект
exit;
вот так попробуй
и var1 Никуда не денется

Mikhail
07.08.2016
12:15:08
Правильно

Aleksandr
07.08.2016
12:15:13
всем привет… помогите плиз с таким вопросом по симфони
есть вьюшка со списком категорий и формой для добавления новой категории
на форме висит ajax запрос
как после отправки формы обновить список?

Mikhail
07.08.2016
12:15:35
Потому что у тебя объект будет убивать gc
Если что-то ещё ссылается на объект, то он не удалится
Через деструктор проверяй, а не таким образом

Yokai
07.08.2016
12:19:27
Еще бывают бесплатные хостинги php?

Google

Aleksandr
07.08.2016
12:19:44
бывают
но без доменов второго уровня

Yokai
07.08.2016
12:20:10
а ssl?

Aleksandr
07.08.2016
12:20:22
а вот это уже хз

Yokai
07.08.2016
12:20:24
сертификат сам сделаю, лишь бы дали возможность прикрутить

Aleksandr
07.08.2016
12:20:40
скорее всего ты уже губу раскатал :) но может быть и есть
у меня приятель под собственный проект небольшой юзает спринтхост

Yokai
07.08.2016
12:23:11
тут у меня паранойя раскатана, а не губа =\ Я ведь вполне готов заплатить 250 рублей за месяц, а вот написать им свой телефон или своим платежом дать номер карты - ...

Sergey
07.08.2016
12:28:45

Admin
ERROR: S client not available

Mikhail
07.08.2016
12:29:08
Именно

Sergey
07.08.2016
12:29:36
ну мне такое поведение было не нужно
я хотел убивать $var1 через $var2
а для этого, как оказалось, без & не обойтись
в общем, как оказалось, я смотрел на ссылки в PHP через призму указателей в Си
что было в корне не верно

Mikhail
07.08.2016
12:32:48
++

Sergey
07.08.2016
12:40:37
мде, век живи - век учсиь
"в PHP 5 переменные объектов, так же как и ресурсы, являются просто указателями на реальные данные объекта, поэтому ссылки на объекты не те же самые "ссылки", о которых говорилось ранее"
Отлично ) теперь точно можно к деревьям приступать по нормалу

Google

Sergey
07.08.2016
12:45:22
разбирался тут векторами, стеками, деками, очередми и списками
и был затык с удалением из очереди
спасибо Mikhail, общаясь с тобой я правильные вещи в интернетах нашел

Mikhail
07.08.2016
13:08:27

Rodion
07.08.2016
13:08:46
кстати, да
просвети, зачем

Sergey
07.08.2016
13:08:53
названия раскрывать не буду

Rodion
07.08.2016
13:09:01
и там это спрашивают?

Sergey
07.08.2016
13:09:06
так вот там меня еще ни разу не спросили про само PHP
алгоритмы, структуры данных, ООП подход без привязки к языку, SOLID, ACID

Mikhail
07.08.2016
13:09:35
Ну сами алгоритмы полезны

Sergey
07.08.2016
13:09:36
Уровни нормализации БД наизусть

Mikhail
07.08.2016
13:10:34
Но реализация на php бесполезное занятие.
А вообще, всё о чем мы говорили - инфа из универа

Sergey
07.08.2016
13:11:07
да, инфа из универа - это точно
но что я делал в универе?

Mikhail
07.08.2016
13:12:10
http://php.net/manual/ru/book.spl.php

Sergey
07.08.2016
13:12:17
а я в универе тусил и учился на уровне "три поствят и збс"

Mikhail
07.08.2016
13:12:28
Вот готовые классы для php

Sergey
07.08.2016
13:13:48
да, я знаю что в SPL они есть

Mikhail
07.08.2016
13:13:50

Sergey
07.08.2016
13:14:22
мне почти 30, я очень много чего забыл уже