|
|
ru.website- RU.WEBSITE ------------------------------------------------------------------- From : Alexander Kostiuchenko 2:463/672.419 27 Apr 2002 20:32:57 To : All Subject : PHP sux ? --------------------------------------------------------------------------------
Как-то раз (а точнее 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 //Александр
* Origin: useless (2:463/672.419)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.website/40293ccb0b09.html, оценка из 5, голосов 10
|