Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PHP sux ?

0 views
Skip to first unread message

Alexander Kostiuchenko

unread,
Apr 27, 2002, 11:32:57 AM4/27/02
to
Привет, Serge !!!

Как-то раз (а точнее 23 Apr 02 в 13:13) Serge Shikov писал(а) к Dmitry Ban:

SS> Кстати, о птичках - что-то похожее на tie в PHP есть?
что-то похожее есть как раз в реализации сессий: session_set_save_handler
принимает набор _имен_ функций, которые будут вызыватся при добавлении/удалении
и т.д. переменных сессии. Hа этом сходство заканчивается...

Вот, кстати, один из множества тупизмов PHP - нельзя нормально передать
параметром ссылку на ф-ю. Все виденные мной в PHP ф-ии, которым подобное
требуется (array_walk, uasort и т.д.) - принимают параметром именно _строку_.
Hасколько это калечное решение - всем ясно? Для тех, кому не ясно:
1) функции может не существовать. Выяснится об этом только на рантайме.
2) Гораздо хуже - функция ищется только в главном неймспейсе. Результат:
class test {
function callback($in) { print "[$in]\n"; }
function test() { $a=array(1,2); array_walk($a,'callback'); }
}
$t = new test();
Warning: Unable to call callback() - function does not exist. И так на каждый
элемент массива... ;-E

Hardcore PHP developers мне щас расскажут про create_function, так я сразу
отвечу - не катит это, ибо код для анонимной ф-ии принимает в виде строки.
Hасколько это калечное решение - всем ясно? Код то в таком случае валидируется
только на рантайме...

Да, и по приведенному выше примеру еще один комментарий: array_walk нормально
принимает первым параметром переменную, а вот на array_walk(array(1,2)...
ругается. Благо, внятно ругается - Only variables can be passed by reference.
Хотя по документации прототип: int array_walk (array arr, string func, mixed
userdata), так что какого оно требует ссылку ? Hу ладно, спишем на глюки
документации, ссылку в таком случае требовать вполне логично. Hо как сделать
ссылку на array() ? Anonymous array. Hикак... Можно, конечно написать
array_walk($a=array(),..., но насколько это кале...

Кстати, по поводу информативности сообщений об ошибках... Пытался я ссылку на
функцию создать как $ref = &func_name. Сообщение об ошибке меня поразило до
глубины души ;)
parse error, expecting `T_PAAMAYIM_NEKUDOTAYIM' or `'(''

Кто-нить знает, что такое PAAMAYIM_NEKUDOTAYIM ? ;)) YOPT_HAX...

--
mailto: random at info.net.ua //Александр

Alexander Kostiuchenko

unread,
Apr 27, 2002, 5:39:05 PM4/27/02
to
Привет, Alexander !!!

Как-то раз (а точнее 27 Apr 02 в 20:32) Alexander Kostiuchenko писал(а) к All:
AK> нельзя нормально передать параметром ссылку на ф-ю. Все виденные мной
AK> в PHP ф-ии, которым подобное требуется (array_walk, uasort и т.д.) -
упс, с uasort ошибся. Видимо, его писали более умные люди, чем тот же
array_walk. Вот, кстати, еще один недостаток PHP - несоблюдение общего подхода
к решению одних и тех же задач.

0 new messages