protected возможно и так будет работать (это же не на уровне интерпретатора наследование), надо проверить правда. А под дальнейшим наследованием что имеется ввиду?
Про агрегацию понял. Да, по сути то же самое, только вызовы замаскированы
Со всем остальным тоже полностью согласен. Попытка можно сказать провалилась, может потом как-нибудь возникнет задача, где этот код будет востребован :)
Действительно. Но это вовсе не "call_user_method_array и подобные функции не возвращают by ref", это проблема магического метода __call, который похоже до сих пор не исправили.
ага, мне тут уже человек сказал что там около 15 правил наследования.
Мы тут в принципе обсуждаем необходимость множественного наследования как такового. Я когда начинал программировать сталкивался с ситуацией когда хочется унаследоваться от двух классов, сейчас уже таких желаний не возникает, может и не нужно тогда множественное наследование.
А вообще этот код написал вспоминая вопрос на одном из собеседований, типа надо унаследоваться от двух классов, как это лучше организовать
"Требует доработки скорее всего, пока что только набросок на будущее"
Как минимум надо еще __set, __get для переменных классов, ну и как вы правильно заметили, еще необходимо научить класс (скорее всего это будут какие-то соглашения), когда оба наследуемых класса реализуют один метод, или когда оба класса имеют одну и ту же переменную. В общем нюансы есть, возможно нужно посмотреть как эти ситуации разрешаются в том же С++, где множественное наследование вроде бы как есть.
Ну предыстория такая. Мне как-то рассказали про сайт, который по вводимой ссылке говорит, посещался ли он вами или нет. Вся соль метода заключалась в том, чтобы создать в документе вводимый линк и посмотреть какой стиль браузер на него вешает. Если стиль a:visited (то есть посещалась ссылка) значит сайт посещался.
Исходя из этого я решил использовать браузер и для ресайза. Зачем нам высчитывать что-то, если достаточно смоделировать ситуацию и браузер все отрисует сам, а мы только подгоним все. Код примерно так выглядит (нуждается в оптимизации и в проверке в других браузерах несомненно, меня устроил и такой вариант):
function adjustTextareaHeight( textarea_object )
{
var textarea_for_autosize = DOM.getElementById( 'textarea_for_autosize' );
textarea_for_autosize.style.width = textarea_object.offsetWidth + 'px';
textarea_for_autosize.style.height = '10px';
textarea_for_autosize.value = textarea_object.value;
if( textarea_for_autosize.offsetHeight != textarea_for_autosize.scrollHeight ) textarea_for_autosize.style.height = textarea_for_autosize.scrollHeight + 'px';
textarea_object.style.height = textarea_for_autosize.offsetHeight + 'px';
if( textarea_object.offsetHeight != textarea_object.scrollHeight ) textarea_object.style.height = textarea_object.scrollHeight + 'px';
}
ничего из топика толком не понятно, видимо что-то пропустил.
по самому скрипту. там высчитывается cols, при этом как я понял все завязывается на ширине одной буквы - 8 пикселей.
Я когда делал авторесайз сделал скрытый textarea с высотой 10пискелей и шириной такой же, как у вводимого поля. Затем заполнял скрытый контейнер и уже полю ввода присваивал значение scrollHeight. Так мне кажется универсальнее. Правда я особо не тестировал под разные браузеры, но под мозилой работает точно.
в итоге вы будете платить "выросшему" кандидату те же 2000 чтобы его удержать. Теперь посчитайте сколько времени ушло у специалиста на обучение, посчитайте сколько вы ему заплатили за это время, которое он по сути прохлаждался, так как он сам не рос и работал не на полную.
кто-то расслабляется плавая в бассейне, кто-то в баре пиво с друзьями пьет, а кто-то на хабре развлекается. думаю если здесь причина не обида за "незаслуженные" минусы, то просто желание поспорить, поговорить, пообщаться... ИМХО конечно, правду узнать бует трудно на самом деле. А вообще проще у него самого спросить :)
а мне надоедает читать в конце/начале каждого комментария: "не минусуйте/плюсаните" кто-нибудь. Раз уж написал свою мысль, какой бы она не была готовься за нее отвечать. Боишься минуснут - не пиши. И попрошайничать плюсы выглядит низко. Хочешь плюсов, напиши развернутый комментарий, приложи силы, покажи мысль.
в чем-то su573 прав насчет "системы", просто он выражает это недипломатичным языком
это как разница между бумажным письмом и электронным от любимой девушки... в бумажное вкладывается гораздо больше "души". здесь тоже самое, в рекламу вложили душу, от нее теплотой веет...
Со всем остальным тоже полностью согласен. Попытка можно сказать провалилась, может потом как-нибудь возникнет задача, где этот код будет востребован :)
http://bugs.php.net/bug.php?id=30959
http://www.pastebin.ca/928739
function a( $param )
{
$param = 'b';
}
$p = 'a';
call_user_func_array( 'a', array( &$p ) );
//a( &$p );
var_dump( $p );
?>
по поводу агрегации ничего сказать не могу. Не нашел такого шаблона. Дайте ссылку
Мы тут в принципе обсуждаем необходимость множественного наследования как такового. Я когда начинал программировать сталкивался с ситуацией когда хочется унаследоваться от двух классов, сейчас уже таких желаний не возникает, может и не нужно тогда множественное наследование.
А вообще этот код написал вспоминая вопрос на одном из собеседований, типа надо унаследоваться от двух классов, как это лучше организовать
Как минимум надо еще __set, __get для переменных классов, ну и как вы правильно заметили, еще необходимо научить класс (скорее всего это будут какие-то соглашения), когда оба наследуемых класса реализуют один метод, или когда оба класса имеют одну и ту же переменную. В общем нюансы есть, возможно нужно посмотреть как эти ситуации разрешаются в том же С++, где множественное наследование вроде бы как есть.
http://php.ru/manual/language.oop5.patte…. Там есть Factory Pattern пример.
Исходя из этого я решил использовать браузер и для ресайза. Зачем нам высчитывать что-то, если достаточно смоделировать ситуацию и браузер все отрисует сам, а мы только подгоним все. Код примерно так выглядит (нуждается в оптимизации и в проверке в других браузерах несомненно, меня устроил и такой вариант):
function adjustTextareaHeight( textarea_object )
{
var textarea_for_autosize = DOM.getElementById( 'textarea_for_autosize' );
textarea_for_autosize.style.width = textarea_object.offsetWidth + 'px';
textarea_for_autosize.style.height = '10px';
textarea_for_autosize.value = textarea_object.value;
if( textarea_for_autosize.offsetHeight != textarea_for_autosize.scrollHeight ) textarea_for_autosize.style.height = textarea_for_autosize.scrollHeight + 'px';
textarea_object.style.height = textarea_for_autosize.offsetHeight + 'px';
if( textarea_object.offsetHeight != textarea_object.scrollHeight ) textarea_object.style.height = textarea_object.scrollHeight + 'px';
}
<div style="width: 0px; height: 0px; overflow: hidden">
<textarea id="textarea_for_autosize"/>
</div>
<textarea name="comment" style="height: 10px; overflow: hidden;" onKeyUp="adjustTextareaHeight(this);">
</textarea>
по самому скрипту. там высчитывается cols, при этом как я понял все завязывается на ширине одной буквы - 8 пикселей.
Я когда делал авторесайз сделал скрытый textarea с высотой 10пискелей и шириной такой же, как у вводимого поля. Затем заполнял скрытый контейнер и уже полю ввода присваивал значение scrollHeight. Так мне кажется универсальнее. Правда я особо не тестировал под разные браузеры, но под мозилой работает точно.
Извините если не в тему...
Стоит ли игра свеч?
в чем-то su573 прав насчет "системы", просто он выражает это недипломатичным языком
это как разница между бумажным письмом и электронным от любимой девушки... в бумажное вкладывается гораздо больше "души". здесь тоже самое, в рекламу вложили душу, от нее теплотой веет...
в общем надеюсь обяъснил
просто гениально