класса. Первый объект вызывает метод второго и передает ему одну из своих локальных переменных (тип строка) по ссылке (во втором в параметрах стоит string &$outter_string). Этот вызванный метод, не стесняясь заполняет outter_string данными разного размера в зависимости от логики.
Это точно нормально? нет ли тут выстрела в ногу?
Так? http://sandbox.onlinephpfunctions.com/code/04e601991204bb06af3fd419d322e44403ba3165
нет, не приватное свойство, а именно локально объявленную в вызывающем методе переменную. Но ваш вариант тоже интересно: это нормально ?
Нормально или нет – зависит от случая. Но это работает. Если это обычная переменная, то точно нормально: посмотрите на array_pop, array_shift, preg_match, они все работают таким же образом, с той лишь разницей, что это функции, а не объекты. А хаку с приватным св-вом точно не место в продуктовом проекте. Разве что в библиотеках и то если без этого никак (посмотрите на код доктрины, там такое бывает)
ок, спасибо это как раз сторонняя библиотека и этого можно было избежать (на мой взгляд) Она (библиотека) у меня память "угоняет" вот я и копаю в каком же это месте, профайлер мне не помог (ну или я не тот выбрал) Пытаюсь глазами копать
Это может быть как раз из-за передачи св-ва по ссылке. GC не чистит объекты, пока есть входящие на него ссылки. Правда, работает ли это для правила, когда передают св-ва объекта, – хз. В расте бы работало, но там есть lifetime у ссылок.
Обсуждают сегодня