LINUX.ORG.RU

PHP и переменные $$


0

1

не могу понять в чем отличие $var от $$var ? Второй программист часто так записывает и я че то не могу загуглить правильно, как это назвается?

Ответ на: комментарий от wxw

Вполне возможно, вот часть кода

    foreach($text as $v=>$k) {
	$f='req_'.$v;
	$$f='';
	if( isset( $values[$v] ) ) {
	    // Преимущество - установленная переменная в $values
	    $$f=$values[$v];
	}elseif( isset ($module[$v]) ) {
	    // Затем - установленная переменная в $module
	    $$f=$module[$v];
	}
  }
spiritkhl ★
() автор топика
Ответ на: комментарий от spiritkhl

Сядьте вечером, выпейте по пивасу и обсудите преимущества и недостатки такого подхода. Только подготовься предварительно, вопросы провокационные придумай

anonymous
()
Ответ на: комментарий от spiritkhl

Если он лучше тебя разбирается, спроси почему именно так, а не по другому, почему нельзя было скажем разобрать этот ассоциативный массив по такому же условию на два других

anonymous
()

Лучше так не делать' потом отлаживать такой код - та еще развлек уха

ЗЫ ЛОР с айпадика выглядит крайне сексуально :)

boombick ★★★★★
()
Ответ на: комментарий от spiritkhl

осталось понять, на** он так делает

Динамический язык, позволяет прострелить ногу танком как делать нефиг (как и все прочие ДЯПы, вроде Python или Perl). Не Джава всё-таки.

resurtm ★★★
()
Ответ на: комментарий от spiritkhl

Спасибо за ссылку, осталось понять, на** он так делает

Для обфускации. Ещё можно вот так функции вызывать

$var();
вот так методы класса
$this->$var();
вот так свойства
$this->$var;
И вот так создавать объекты
new $var(); 

r_asian ★☆☆
()
Ответ на: комментарий от anonymous

Ну, видимо есть такие люди.

Функции method_exists(), property_exists(), class_exists(), function_exists() ну и наконец isset() как бы намекают, что такой синтаксический сахарок не случайность, а преднамеренная диверсия.

r_asian ★☆☆
()
Ответ на: комментарий от true_admin

Я ещё не видел ЯП который бы не позволял себе отстрелить голову.

А я видел ещё больше людей, уверенных, что использование «единственно правильного» языка может заменить кодеру моск.

Кстати, все эти толпы школоты, ранее тихо и уютно говнокодящие на php толпой ломанулись на python+django и ruby+rails. Да так рьяно, что за пальму первенства среди убогогоньких недоязычков и говнофреймворков скоро развернётся нешуточная драка.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Я правильно понял, что второй кодер специально так пишет, чтоб никто кроме него не мог разобраться в этом коде? или нет?

anonymous
()
Ответ на: комментарий от anonymous

Я думаю это такой побочный эффект.

В понедельник ему скажу что он сам будет писать свой код, ибо я 80% изучаю только его.

И проблема не только в таких переменных переменных, а в именах, которые только он знает что значат, допустим - $k,$l,$f.

Еще проблема бывает такая что внутренность foreach разлетается на 1000 строк, и поскольку он писал в MC все форматирование грохнуто, и в конце файла получается что то типа того

    }
}
}
}
}

И понять где тут скобка foreach'a бывает просто нереальна.

Когда пару дней за кодом посидишь, становится все правильно и логично, и весь гнев пропадает, но это неправильно что ты долго и упорно почитываешь код только чтобы понять как вся эта х** работает

spiritkhl ★
() автор топика
Ответ на: комментарий от spiritkhl

>foreach разлетается на 1000 строк

Расскажи человеку про функции. Страдает бедняга.

Deleted
()
Ответ на: комментарий от PolarFox

В питоне сабжевый прострел всё же не одним символом делается.

Сабжевый-то да, но, вот к примеру, сколько нытья было про то, что в Python нет настоящих private модификаторов доступа. Python отличный язык, но он, как и PHP/Perl, сам понимаешь, не предназначен для кодеров, которые хотят не думать совсем.

resurtm ★★★
()
Ответ на: комментарий от spiritkhl

Для этого нужно принимать Code Conventions. И делать это нужно ДО начала разработки.

Wizard_ ★★★★★
()
Ответ на: комментарий от spiritkhl

И понять где тут скобка foreach'a бывает просто нереальна.

Это называется: «Я никогда не работал в команде и не оговорил с удаленным программистом нотацию, по которой будет писаться код и документация»

Как бы лажа со стороны лидера проекта в первую очередь.

1. табуляция - зло, принимается автоматическая замена табов на 3-4 пробела (я 3 юзаю, у пайтонистов 4 - дефакто, но это как-то размашисто очень ИМХО)

2. установить четкий стиль фигурных скобок, K&R - компактнее, но рекомендую Олмана, в нем можно безболезненно комментировать условие и ничего не сломается.

3. именование переменных, кэмелкейс или «_»

4. информативность именования переменных и итераторов

ознакомься хотя бы с одним хэндбуком крупного проекта, посмотри самое начало документации коханы или симфони или еще чего-нибудь, там все это есть.

А так, проблема уровня ССЗБ.

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

дело в том, что это не нотация, а очевидный говнокод, комментарии кириллицей, однобуквенные идентификаторы, циклы на тысячу строк
и кстати key=>value там наоборот

wxw ★★★★★
()
Ответ на: комментарий от wxw

дело в том, что это не нотация, а очевидный говнокод, комментарии кириллицей, однобуквенные идентификаторы, циклы на тысячу строк

Прежде чем что-то называть говнокодом, надо сначала всю картину посмотреть. А иначе это - говнокомментарий.

Все что ты перечислил и задается нотацией. Если ее нет - то на выходе полный ССЗБ и будет. Это первое, с чего надо начинать проект.

BaBL ★★★★★
()
Ответ на: комментарий от spiritkhl

Эта нотация может быть использована для метапрограммирования в php, однако в данном конкретном контексте она не к месту => говнокод.

tyler19 ★
()
Ответ на: комментарий от spiritkhl

да, я действительно не работал в команде нормально, но все же считаю что такое делать нельзя

Можно делать все, что язык позволяет. Другое дело - насколько это уместно в данном, конкретном случае.

$$var применяются в достаточно крупных проектах и имеют свои вполне определенные шаблоны использования. К примеру, я встречал довольно элегантные решения из разряда вообще наборного имени: ${«lang_».$var};

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

Я так понимаю есть определенные стандарты программирования, вернее стандартизированые стили, где команды придерживаются одного стиля, чтобы всем было удобно работать.

Если есть чего посоветовать, буду очень признателен)

spiritkhl ★
() автор топика

Тема решенной не отмечена, так что отвечаю (тред не читал).
Если в $var находится строка «val», то $$var - это будет $val.

moscwich ★
()
Ответ на: комментарий от spiritkhl

И понять где тут скобка foreach'a бывает просто нереальна.

Открываешь в эклипсе, нажимаешь Code format (или как оно там называется). Сохраняешь. Отправляешь ему и пусть е**тся.

GateKeeper ★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.