А может вообще у кого-нибудь появится желание меня поднатаскать по этой теме? Можем договориться.

Спустя 1 минута, 12 секунд (3.11.2011 - 11:04) Игорь_Vasinsky написал(а):
Спустя 9 минут, 13 секунд (3.11.2011 - 11:13) McLotos написал(а):
=)
Значит я ещё не очень поумнел =)
А можете меня обучить? Ну чуть-чуть чтобы просто в логику вникнуть, а дальше как-нибудь сам.
Особенно привлекла книжка из серии Глазами Хакера. Я читал почти всю серию, только вот про php не видел. =)
Значит я ещё не очень поумнел =)
А можете меня обучить? Ну чуть-чуть чтобы просто в логику вникнуть, а дальше как-нибудь сам.
Особенно привлекла книжка из серии Глазами Хакера. Я читал почти всю серию, только вот про php не видел. =)
Спустя 1 минута, 30 секунд (3.11.2011 - 11:15) Игорь_Vasinsky написал(а):
Я бы тебе советовал пройти этот курс - всё обучение построено на аналогии и сравнении с реальной жизнью.
http://irbis-team.com/15/8
http://irbis-team.com/15/8
Спустя 3 минуты, 8 секунд (3.11.2011 - 11:18) McLotos написал(а):
Блин, ОГРОМНОЕ человеческое спасибо!
Спустя 14 минут, 54 секунды (3.11.2011 - 11:33) McLotos написал(а):
Почитал чуть-чуть и возник такой вопрос.
Вывод результата работы класса делается в примере так
echo $obj -> helloWorld($name)
а если я допустим использую шаблоны (tpl) и мне нужно в них сделать вывод. Если допустим просто вывести результат переменной то я делаю так <?=$obj?> или если функция то так <?funk()?> а как выводить результат работы класса?
Вывод результата работы класса делается в примере так
echo $obj -> helloWorld($name)
а если я допустим использую шаблоны (tpl) и мне нужно в них сделать вывод. Если допустим просто вывести результат переменной то я делаю так <?=$obj?> или если функция то так <?funk()?> а как выводить результат работы класса?
Спустя 10 минут, 15 секунд (3.11.2011 - 11:43) Игорь_Vasinsky написал(а):
Цитата |
Вывод результата работы класса делается в примере так echo $obj -> helloWorld($name) |
это инициализация объекта класса
Прежде чем приступать к работе с шаблонами, необходимо понять суть ООП, ООП это очень серъёзный момент и использовать его не по назначению - это глупо.
Во - первых прежде чем показывать какой я крутой программист - необходимо понять основы ООП (иначе мнение будет полностью противоположным)
Ты сразу кинулся искать применение ООП в своём шаблонизаторе, это не правильный подход.
Для этих целей мог бы просто написать функцию парсера для TPL
1. Получить шаблон
1. Поиск по шаблону
2. Замена в шаблоне.
Спустя 8 минут, 5 секунд (3.11.2011 - 11:51) McLotos написал(а):
Но в соей структуре (как сделано сейчас) существует только 1 класс
Его применение банально, я делаю запрос в БД, оттуда вытягиваю что-то типа
<ul type=none>
<li>{link.home}</li>
<li>{link.news}</li>
<li>{link.admins}</li>
<li>{link.settings}</li></ul>
сохраняю её в переменную $menu и делаю вывод
print Template::evaluate($menu,$lang);
или это тоже не правильно?
class Template
{ public static function evaluate($str,$arr)
{ foreach($arr as $k=>$v)
$str = str_replace("{".$k."}", $v,$str);
return $str; }
}
Его применение банально, я делаю запрос в БД, оттуда вытягиваю что-то типа
<ul type=none>
<li>{link.home}</li>
<li>{link.news}</li>
<li>{link.admins}</li>
<li>{link.settings}</li></ul>
сохраняю её в переменную $menu и делаю вывод
print Template::evaluate($menu,$lang);
или это тоже не правильно?
Спустя 4 минуты, 30 секунд (3.11.2011 - 11:56) m4a1fox написал(а):
Итак, ООП! Привыкай мыслить абстрактно! Это уже не процедуры, хотя с ними многое связано!
Я бы вам посоветовал вникнуть в суть ООП! Не бросаться сразу на применение полученных знаний в своем проекте.... ИМХО - не получится так к сожалению.
Вообще понятие правильно или нет, сугубо личное у каждого. Есть определенный набор необходимых вещей, таких как абстрактные классы. Полиморфизм. Инкапсуляция, делегирование... и много чего другого. Есть 3 кита на кот. строится ООП. Это - ИНКАПСУЛЯЦИЯ, НАСЛЕДОВАНИЕ, ПОЛИМОРФИЗМ. Сходу это не преодолеть. Хотя может я туп, но изучаю ООП с июля....
Я бы вам посоветовал вникнуть в суть ООП! Не бросаться сразу на применение полученных знаний в своем проекте.... ИМХО - не получится так к сожалению.
Вообще понятие правильно или нет, сугубо личное у каждого. Есть определенный набор необходимых вещей, таких как абстрактные классы. Полиморфизм. Инкапсуляция, делегирование... и много чего другого. Есть 3 кита на кот. строится ООП. Это - ИНКАПСУЛЯЦИЯ, НАСЛЕДОВАНИЕ, ПОЛИМОРФИЗМ. Сходу это не преодолеть. Хотя может я туп, но изучаю ООП с июля....
Спустя 13 минут, 50 секунд (3.11.2011 - 12:09) McLotos написал(а):
Цитата |
ИНКАПСУЛЯЦИЯ, НАСЛЕДОВАНИЕ, ПОЛИМОРФИЗМ |
Да, я помню как несколько лет назад, к сожалению, прогуливал лекции по ООП, где всё это дело нам объясняли. Просто при ООП в той же Delphi там всё наглядно(поэтому и нудно), а с php как-то всё по-другому.
Спустя 3 минуты, 29 секунд (3.11.2011 - 12:13) m4a1fox написал(а):
Не знаю как в Делфи. Не сталкивался... но в php - весело однозначно!
Спустя 4 минуты, 10 секунд (3.11.2011 - 12:17) Winston написал(а):
m4a1fox
Что такое полиморфизм ?
Что такое полиморфизм ?

Спустя 2 минуты, 40 секунд (3.11.2011 - 12:20) m4a1fox написал(а):
Winston, проверка однако
Как я рад что ты спросил! Полиморфизм - это когда мы можем использовать методы и объекты одного класса, абстрагируясь от их реального класса!

Как я рад что ты спросил! Полиморфизм - это когда мы можем использовать методы и объекты одного класса, абстрагируясь от их реального класса!
Спустя 4 минуты (3.11.2011 - 12:24) Winston написал(а):
Свернутый текст
Цитата (m4a1fox @ 3.11.2011 - 11:20) |
проверка однако |
Нет не проверка, сам пытаюсь въехать

Цитата (m4a1fox @ 3.11.2011 - 11:20) |
Полиморфизм - это когда мы можем использовать методы и объекты одного класса, абстрагируясь от их реального класса |

Спустя 1 минута, 46 секунд (3.11.2011 - 12:26) m4a1fox написал(а):
Winston
Цитата |
Нет не проверка, сам пытаюсь въехать |
А! Ну окей! Дело то хорошее! Давай в мыло залазь! Поговорим если есть желание и время!
Спустя 6 минут, 37 секунд (3.11.2011 - 12:32) Игорь_Vasinsky написал(а):
Winston
мы вторые или третьи сутки в агенте расжовываем всю эту ООП.... меня учать
мы вторые или третьи сутки в агенте расжовываем всю эту ООП.... меня учать

Спустя 1 минута, 58 секунд (3.11.2011 - 12:34) caballero написал(а):
Цитата |
Полиморфизм - это когда мы можем использовать методы и объекты одного класса, абстрагируясь от их реального класса |
сам хоть понял что написал?
кстати, полиморфными могут быть функции и в процедурном программировании
to McLotos
Изучать нужно не ООП а программирование. ООП - это не отдельный язык.
Спустя 1 минута, 24 секунды (3.11.2011 - 12:35) Игорь_Vasinsky написал(а):
caballero
а что не понятного?
а что не понятного?
Спустя 2 минуты, 59 секунд (3.11.2011 - 12:38) m4a1fox написал(а):
caballero
Цитата |
сам хоть понял что написал? |
Да! Понял!
Сразу оговоримся! Я в курсе что вы супер-пупер программист! Поэтому, если по вашему, то, что я написал фигня, и вообще не шарю в этом, и мне с таким пониманием, лучше идти коровам хвосты в деревне крутить, то..... напишите, как вы понимаете полиморфизм...
А то крики, бред, фигня, да чувак не в теме, учи мат часть, или сначала научись privat от protected отличать - проходили! Есть свое мнение на этот счет - прошу, поделитесь!
Спустя 1 минута, 31 секунда (3.11.2011 - 12:40) Winston написал(а):
Свернутый текст
Цитата (m4a1fox @ 3.11.2011 - 11:26) |
Давай в мыло залазь! Поговорим если есть желание и время! |
Давай вечером.
McLotos
Почитай хотя бы вики для начала, и пройдись по ссылкам которые там есть.
Спустя 28 минут, 1 секунда (3.11.2011 - 13:08) bodja написал(а):
Дам задачку по полиморфизму :D ?что бы было проще понять полиморфизм.
есть функция
Задание 1
В функции Plus($a,$b) их нужно сложить ,и вернуть результат 4
В функции Plus($a,$b) их нужно сложить ,и вернуть результат 'двадва' :D
Вот то что вы напишете в ?????????? и будет пользовательской реализацией полиморфизма.
Есть еще реализация полиморфизма на языковом уровне.
Например
Вот вам абстракции :D ,неудевительно,что каждый интерпретирует полиморфизм по своему.
Если относить полиморфизм к ООП ,то тут вообще черт голову сломит,такое уже намутили,что концов не найдеш.
есть функция
function Plus($a,$b){
??????????
return $r;
}
Задание 1
$a=2;;
$b=2
В функции Plus($a,$b) их нужно сложить ,и вернуть результат 4
Задание 2
$a='два';
$b='два';
В функции Plus($a,$b) их нужно сложить ,и вернуть результат 'двадва' :D
Вот то что вы напишете в ?????????? и будет пользовательской реализацией полиморфизма.
Есть еще реализация полиморфизма на языковом уровне.
Например
file('http://www.example.com/');
file('./myfile.txt');
Вот вам абстракции :D ,неудевительно,что каждый интерпретирует полиморфизм по своему.
Если относить полиморфизм к ООП ,то тут вообще черт голову сломит,такое уже намутили,что концов не найдеш.
! |
Winston |
Спустя 1 минута, 36 секунд (3.11.2011 - 13:10) caballero написал(а):
Цитата |
Почитай хотя бы вики для начала, и пройдись по ссылкам которые там есть. |
по данному вопросу в педивикии написан какой то бред
2 m4a1fox
Зачем столько экспресии?
Если по простому то полиморфизм - это возможность задания разного поведения функции с тем же именем. В PHP это не работает, насколько я знаю, но в С++ можно задать несколько функций (или методов класса)
с тем же именем но с разным набором параметров. И в зависимости от того какие аргументы будут переданы при вызове такая из функций и будет вызвана.
То же самое происходит если функция перегружена в классе наследнике .
.
Спустя 1 минута, 50 секунд (3.11.2011 - 13:11) m4a1fox написал(а):
caballero
Цитата |
Зачем столько экспресии? |
Ну я думал ща АТАКА будет! Мол не шаришь, кыш отсюда!




Спустя 1 минута, 58 секунд (3.11.2011 - 13:13) Winston написал(а):
Цитата (caballero @ 3.11.2011 - 12:10) |
насколько я знаю, но в С++ можно задать несколько функций (или методов класса) с тем же именем но с разным набором параметров. И в зависимости от того какие аргументы будут переданы при вызове такая из функций и будет вызвана. |
Да да да, я тоже такое помню...
То есть полиморфизм - несколько реализаций одного метода?

Спустя 2 минуты, 50 секунд Winston написал(а):
bodja
function foo($a, $b)
{
if(is_int($a) && is_int($b))
return $a + $b;
if(is_string($a) && is_string($b))
return $a . ' ' . $b;
}
echo foo(1, 2);
echo foo('раз', 'два');
Так ? :unsure:
Спустя 3 минуты, 16 секунд (3.11.2011 - 13:17) caballero написал(а):
2 m4a1fox
Понятно - горячий эстонский парень
Понятно - горячий эстонский парень
Цитата |
То есть полиморфизм - несколько реализаций одного метода? |
Да это самый простой для понимания классический пример. Все остальное - от лукавого.
Спустя 11 минут, 19 секунд (3.11.2011 - 13:28) m4a1fox написал(а):
caballero
Цитата |
Понятно - горячий эстонский парень |
крымский :)
Вот такой пример видел, и на его основе - понял
class A{
public function GET(){echo 'This is class A ';}
public function SET(){$this->GET()}
}
class B extends A{
public function GET(){echo 'This is class B ';}
}
$a = new A();
$a->SET();
$b = new B();
$b->SET(); // Как я понимаю это и есть полиморфизм.
Спустя 24 минуты, 1 секунда (3.11.2011 - 13:52) vital написал(а):
Цитата |
Если по простому то полиморфизм - это возможность задания разного поведения функции с тем же именем. В PHP это не работает, насколько я знаю, но в С++ можно задать несколько функций (или методов класса) с тем же именем но с разным набором параметров |
Тогда что такое перегрузка и/или перекрытие? ;)
Не совсем верно ваше высказывание.
Спустя 1 минута, 36 секунд (3.11.2011 - 13:54) vital написал(а):
Цитата |
// Как я понимаю это и есть полиморфизм. |
Это обычное наследование. Просто переопределили метод предка.
Спустя 7 минут, 47 секунд (3.11.2011 - 14:01) m4a1fox написал(а):
vital
Цитата |
Это обычное наследование. Просто переопределили метод предка. |
Переопределение метода предка это как раз
public function GET(){echo 'This is class B ';}
Мы в B классе переопределяем метод GET из A класса!
Спустя 5 минут, 54 секунды (3.11.2011 - 14:07) caballero написал(а):
Цитата |
Тогда что такое перегрузка и/или перекрытие? ![]() |
тоже полиморфизм
Спустя 2 минуты, 24 секунды (3.11.2011 - 14:10) Winston написал(а):
Цитата (caballero @ 3.11.2011 - 13:07) |
тоже полиморфизм |
Мозги плавятся

Спустя 20 минут, 50 секунд (3.11.2011 - 14:31) caballero написал(а):
Цитата |
Мозги плавятся |
На самое деле ничего сложного.
Полиморфизм - в общем случае способность объекта (класса, функции) с тем же именем изменять свое поведение в зависимости от обращения к нему.
Спустя 2 минуты, 6 секунд (3.11.2011 - 14:33) Winston написал(а):
Цитата (caballero @ 3.11.2011 - 13:31) |
Полиморфизм - в общем случае способность объекта (класса, функции) с тем же именем изменять свое поведение в зависимости от обращения к нему. |
Во !!! Отличное определение, даже я понял.
Спустя 6 часов, 37 минут, 27 секунд (3.11.2011 - 21:10) bodja написал(а):
Я тут немного уточню.
это способность изменять свое поведение в зависимости от типа входных данных.
Я не случайно привел задачку и показал совсем другой пример с функцией file,
что бы вы поняли саму абстрактность данных.
То есть в первом случае (в задачке) мы изменяем поведение функции в зависимости от
типа данных буквально.
Во втором (с file) здесь изменяется ее поведение в зависимости от того,что мы ей указываем.
То есть если мы указываем файл ,она шуршит в файловой системе ,если ссылку ,она использует
сокеты и выходит в инет .
В практической реализации для веба например можно придумать функцию или метод DocRead ,которая сможет читать форматы TXT,XML,HTML и выводить содержимое этих документов на страницу .И в зависимости от того ,какой документ мы ей зададим ,мы естественно будем менять механизм чтения этих файлов.
Ну а потом, мы просто не думаем ,как мы будем разруливать эти документы.
DocRead ('text.txt');
DocRead ('text.xml');
DocRead ('text.html');
ЗЫ Тоже ходил в вики,там какой то долбень перпутал абстрактность в данных с абстрактным классом,но так как абстрактный класс существует только для наследавания ,он туда еще и наследование прикрутил,но так как это все не решает сути полиморфизма ,он начал еще и с перегрузкой методов играться.В итоге полная путаница и непонимание самого себя.Еще бы интерфейс бы прикрутил и запустил свое определение на луну.
ЗЫЫ Winston меня сильно кумарит отсутствие моих любимых смайликов при выделении кодом,найчите как обойти.
это способность изменять свое поведение в зависимости от типа входных данных.
Я не случайно привел задачку и показал совсем другой пример с функцией file,
что бы вы поняли саму абстрактность данных.
То есть в первом случае (в задачке) мы изменяем поведение функции в зависимости от
типа данных буквально.
Во втором (с file) здесь изменяется ее поведение в зависимости от того,что мы ей указываем.
То есть если мы указываем файл ,она шуршит в файловой системе ,если ссылку ,она использует
сокеты и выходит в инет .
В практической реализации для веба например можно придумать функцию или метод DocRead ,которая сможет читать форматы TXT,XML,HTML и выводить содержимое этих документов на страницу .И в зависимости от того ,какой документ мы ей зададим ,мы естественно будем менять механизм чтения этих файлов.
Ну а потом, мы просто не думаем ,как мы будем разруливать эти документы.
DocRead ('text.txt');
DocRead ('text.xml');
DocRead ('text.html');
ЗЫ Тоже ходил в вики,там какой то долбень перпутал абстрактность в данных с абстрактным классом,но так как абстрактный класс существует только для наследавания ,он туда еще и наследование прикрутил,но так как это все не решает сути полиморфизма ,он начал еще и с перегрузкой методов играться.В итоге полная путаница и непонимание самого себя.Еще бы интерфейс бы прикрутил и запустил свое определение на луну.

ЗЫЫ Winston меня сильно кумарит отсутствие моих любимых смайликов при выделении кодом,найчите как обойти.

Спустя 2 часа, 4 минуты, 36 секунд (3.11.2011 - 23:15) SerginhoLD написал(а):
Если кратко, на русском понятном языке, полиморфизм это способность класса-предка переопределять методы класса-родителя, и все, точка, нет здесь другого определения, ничего другое к полиморфизму не относится.
Всё.
class A
{
function name()
{
return "Я главный";
}
}
class B extends A
{
function name()
{
return "А я переопределил твое имя ^^";
}
}
Всё.
Спустя 4 минуты, 27 секунд (3.11.2011 - 23:19) SerginhoLD написал(а):
bodja твоя задача никак к полиморфизму не относится, у тебя обычный пример функции, в которой проверяются параметры, и на основе проверки, производится какая либо операция. Твоя задача, возможный(о_О) пример перегрузки функции, но язык PHP не умеет перегружать функции. Перегрузка функций(опять же повторяюсь) к полиморфизму никак не относится.
Спустя 45 минут, 3 секунды (4.11.2011 - 00:04) bodja написал(а):
SerginhoLD
Я не имею привычки кому либо ,что то доказывать,и тем более ,что либо отрицать.
Я понимаю что время идет,появляются новые языки,со своими возможностями и недовозможностями ,и каждый из нас прошел разную школу программирования.
Если вас так интересует полиморфизм ,и только так и никак иначе ,вот пожалуста выбирайте наздоровье.
А насчет определений полиморфизма имено в ООП,я уже свое мнение высказывал в начале.
Я не имею привычки кому либо ,что то доказывать,и тем более ,что либо отрицать.
Я понимаю что время идет,появляются новые языки,со своими возможностями и недовозможностями ,и каждый из нас прошел разную школу программирования.
Если вас так интересует полиморфизм ,и только так и никак иначе ,вот пожалуста выбирайте наздоровье.
А насчет определений полиморфизма имено в ООП,я уже свое мнение высказывал в начале.
Цитата |
Конкретные механизмы реализации полиморфизма: 1. Чистый полиморфизм – один код функции по разному интерпретируется в зависимости от типов аргумент: 2. Перезагрузка – определение нескольких функций с одним именем (С++); 3. Переопределение (простой полиморфизм) – конкретный метод определяется телом объекта при компиляции программы (ранее связывание). 4. Полиморфные объекты (сложный полиморфизм) – конкретный метод определяется топим объекта в процессе выполнения программы (позже связывание). 5. Обобщение функции (шаблоны) – используются при реализации в языке параметризованных классов (С++). |
Спустя 20 минут, 22 секунды (4.11.2011 - 00:25) caballero написал(а):
SerginhoLD пример человека изучающего ООП (по видеокурсам судя по всему) вместо програмирования.
bodja
С приведенными функциями ситуация несколько неоднозначная. С одной строны функции действительно ведут себя как полиморфные, с другой стороны обычно применительно к языкам программирования подразумевается что полиморфизм обеспечивается на уровне компилятора, который генерит разные сигнатуры для вариантов функций и автоматически вызывает необходимую.
bodja
С приведенными функциями ситуация несколько неоднозначная. С одной строны функции действительно ведут себя как полиморфные, с другой стороны обычно применительно к языкам программирования подразумевается что полиморфизм обеспечивается на уровне компилятора, который генерит разные сигнатуры для вариантов функций и автоматически вызывает необходимую.
Спустя 20 минут, 24 секунды (4.11.2011 - 00:45) bodja написал(а):
caballero
Я с вами согласен,но только до того момента когда сам не начнеш писать компилятор - интерпретатор-фрейворк ,называйте как хотите.
Полиморфизм - это любимая фича языкописателей,в пользовательском программировании я редко встречал эту реализацию.
Но тут видите как ,больше академический спор.
Но мне кажется лучше изучать такие вещи ,чем всякие новомодно-старомодные паттерны,
а потом думать каким боком это влепить.
Я с вами согласен,но только до того момента когда сам не начнеш писать компилятор - интерпретатор-фрейворк ,называйте как хотите.
Полиморфизм - это любимая фича языкописателей,в пользовательском программировании я редко встречал эту реализацию.
Но тут видите как ,больше академический спор.
Но мне кажется лучше изучать такие вещи ,чем всякие новомодно-старомодные паттерны,
а потом думать каким боком это влепить.
Спустя 5 минут, 42 секунды (4.11.2011 - 00:51) caballero написал(а):
Цитата |
Полиморфизм - это любимая фича языкописателей,в пользовательском программировании я редко встречал эту реализацию |
.
Крайне странно - фича очень удобная и лично мне в PHP ее очень не хватает
Было бы гораздо удобнее вместо проверки является ли параметр таким то типом или задан ли второй, третий и т.д. параметр просто написать три функции без всяких if else
Кода может и больше бы получилось, зато проще и читабельнее а компилятору без разницы.
Крайне странно - фича очень удобная и лично мне в PHP ее очень не хватает
Было бы гораздо удобнее вместо проверки является ли параметр таким то типом или задан ли второй, третий и т.д. параметр просто написать три функции без всяких if else
Кода может и больше бы получилось, зато проще и читабельнее а компилятору без разницы.
Спустя 6 часов, 2 минуты, 17 секунд (4.11.2011 - 06:53) McLotos написал(а):
caballero
ООП вообще не язык, а только методика. Способ реализации, вот и всё.Winston
Не нужно меня в википедию посылать. Я это и так знаю.
ООП вообще не язык, а только методика. Способ реализации, вот и всё.Winston
Не нужно меня в википедию посылать. Я это и так знаю.
Цитата |
И в зависимости от того какие аргументы будут переданы при вызове такая из функций и будет вызвана. |
Почему в php это нельзя сделать? а как же If или тот же Case?
Короче начинаем усиленно изучать объектно ориентированный подход к PHP-программированию =)
Спустя 3 часа, 47 минут, 56 секунд (4.11.2011 - 10:41) SoMeOnE написал(а):
Я чего то не понимаю)
Вот эта фраза
Вот эта фраза
Цитата (caballero @ 3.11.2011 - 11:31) |
Полиморфизм - в общем случае способность объекта (класса, функции) с тем же именем изменять свое поведение в зависимости от обращения к нему. |
Я часто использую такие ф-ии
public static function preString ($str, $specchars = false) {
if (!is_array($str)) {
if (get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
if ($specchars) {
$str = htmlspecialchars($str);
}
$str = trim(mysql_escape_string($str));
} else {
foreach ($str as $k=>$v) {
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
if ($specchars) {
$v = htmlspecialchars($v);
}
$str[$k] = trim(mysql_escape_string($v));
}
}
return $str;
}
Я что полиморфизм использую. Что то не верится. Да и еще все говорят что в php этого нету.
Вродебы ф-ия работает по разному в зависимости от входящих параметров.
Можете объяснить в чем я ошибаюсь?)
Спустя 38 минут, 46 секунд (4.11.2011 - 11:20) McLotos написал(а):
И так вернемся к тому с чего всё-таки началась эта тема =)
Игорь_Vasinsky
Игорь_Vasinsky
Цитата |
Ты сразу кинулся искать применение ООП в своём шаблонизаторе, это не правильный подход. |
У меня есть готовая структура, есть система подключения шаблонов, если всё это подогнать под ООП стандарты, то как мне всё-таки реализовывать вывод информации?
Во многих CMS которые я разбирал пишутся специальные функции, которые разрешают использовать что-то типа {PHP.MENU} для вывода, а мне как тогда делать?
Я вот почитал на ирбисе статейку по ООП, и немного в тупике.
Просто я привык сразу пробовать то что читаю, и желательно на реальном примере. В данный момент я пытаюсь написать первый класс, который бы позволил находясь в админке работать с файлами на сервере, ну т.е. создавать, изменять, удалять. И я даже не знаю с чего начать. Как это сделать функциями я могу понять, а вот с классами тупняк. =(
Может я уже слишком старый для восприятия новых техник? =))))
Спустя 13 минут, 8 секунд (4.11.2011 - 11:33) Игорь_Vasinsky написал(а):
дело не в возрасте.
мне самому пока трудно объективно рассуждать в этом направлении ибо оно для меня тоже ново (3 раза начанал, счас 4й - уже подольше паримся)
Вообщем что я могу предложить - ты пиши класс - выкладывай - а здесь те подскажут где что и почему так делать не надо. - это будь уверен.
мне самому пока трудно объективно рассуждать в этом направлении ибо оно для меня тоже ново (3 раза начанал, счас 4й - уже подольше паримся)
Вообщем что я могу предложить - ты пиши класс - выкладывай - а здесь те подскажут где что и почему так делать не надо. - это будь уверен.
Спустя 13 минут, 21 секунда (4.11.2011 - 11:46) McLotos написал(а):
Вообще разработка класса у меня получается очень большим процессом:
1. Проработка идеи (карандашом на бумажке =))
2. Способы реализации (как правило БлокСхема)
3. Написание кода (сначала просто код, патом переделывается в фукнцию, затем оптимизируется и далее уже разработка класса), блин сколько действий =))))
1. Проработка идеи (карандашом на бумажке =))
2. Способы реализации (как правило БлокСхема)
3. Написание кода (сначала просто код, патом переделывается в фукнцию, затем оптимизируется и далее уже разработка класса), блин сколько действий =))))
Спустя 8 минут, 27 секунд (4.11.2011 - 11:55) Игорь_Vasinsky написал(а):
Не забывай про инкапсуляцию и расширение возможностей через наследование.
чё сказал....
чё сказал....

Спустя 1 минута, 23 секунды (4.11.2011 - 11:56) McLotos написал(а):
Свернутый текст
Игорь_Vasinsky
=)))))
РжуНиМагу! =)))
=)))))






РжуНиМагу! =)))
Спустя 3 минуты, 22 секунды (4.11.2011 - 11:59) bodja написал(а):
Цитата |
Я что полиморфизм использую. Что то не верится. |
Ну а в чем разница ,между тем ,что написали функцию вы ,или написал ее кто то другой.

Мне вот тоже не верилось ,когда я написал программу и обьявил некоторые ее функции как
public function ,а потом из другой программы смог с этими функциями работать точно так же ,как и с API операционки,хотя это был exe а не dll.
Более того пошел дальше ,подключил библиотеку разруливания vbs скриптов и код этого скрипта смог обратится к функциям моей программы ,точно так же как и к штатным своим функциям.
Представте какие у меня были шайбы от удивления - я почуствовал себя богом



Спустя 6 минут, 33 секунды (4.11.2011 - 12:06) McLotos написал(а):
Спустя 35 минут, 29 секунд (4.11.2011 - 12:41) m4a1fox написал(а):
McLotos
Из книжки цитата....
Из книжки цитата....
Цитата |
По мере работы с набором классов неминуемо будут возникать исключительные ситуации. Поэтому, прежде чем перейти к разработке набора классов, следует создать иерархию исключений, обрабатывающих исключения... |
Спустя 32 минуты, 36 секунд (4.11.2011 - 13:14) caballero написал(а):
Цитата |
Я что полиморфизм использую. Что то не верится. Да и еще все говорят что в php этого нету. Вродебы ф-ия работает по разному в зависимости от входящих параметров. Можете объяснить в чем я ошибаюсь?) |
в PHP это не рабьотает на уровне компилятора
то есть нельзя написать
function myfunc($par1)
{
}
function myfunc($par1,$par2)
{
}
function myfunc(mytype $par1)
{
}
и т.д.
Спустя 1 минута, 58 секунд (4.11.2011 - 13:16) caballero написал(а):
Цитата |
По мере работы с набором классов неминуемо будут возникать исключительные ситуации |
а при работе не с классами они не будут возникать? И почему неминуемо должны возникать?
Спустя 29 минут, 59 секунд (4.11.2011 - 13:46) m4a1fox написал(а):
caballero
Цитата |
И почему неминуемо должны возникать |
Откуда мне знать, почему именно так. У автора учебника спросите

Спустя 1 час, 20 минут, 23 секунды (4.11.2011 - 15:06) SoMeOnE написал(а):
caballero
Вроде бы понел)
Если бы было возможно, то можно было бы обойтись switch, if конструкций в функции...?
Вроде бы понел)
Если бы было возможно, то можно было бы обойтись switch, if конструкций в функции...?
Спустя 2 дня, 19 часов, 43 минуты, 31 секунда (7.11.2011 - 10:50) linker написал(а):
Цитата (caballero @ 3.11.2011 - 13:10) |
насколько я знаю, но в С++ можно задать несколько функций (или методов класса) |
Это называется перегрузка методов класса и к полиморфизму никакого отношения не имеет. Это уходит тесными корнями в функциональное программирование, которого почему-то по вашему убеждению не существует. В PHP я могу сделать, например, так
function foo()
{
list($param1, $param2, $param3) = func_get_args();
}
foo();
foo(1);
foo('s', 2);
foo(array(1, 2), 'd', 1);
Полиморфизм тесно связан с наследованием и определяет изменение поведения экземпляров класса. Чтобы лучше было понятно вспоминаем что такое полиморфные вирусы? Это вирусы, которые копируют себя из одной жертвы в другую и при этом модифицируют свой бинарный код, меняя его реализацию и поведение, но не изменяя результата работы. Т.е. суть этого - изменение поведения экземпляра при условии неизменности результата.
Спустя 55 минут, 6 секунд (7.11.2011 - 11:45) caballero написал(а):
Цитата |
Это называется перегрузка методов класса и к полиморфизму никакого отношения не имеет. |
это и есть классический полиморфизм. Из того что в ООП используется полиморфизм не следует что он используется только в ООП.
Цитата |
Полиморфизм тесно связан с наследованием |
Никак не связан. Можно наследовать функцию без переопределения а можно перегрузить функцию и наследоватиь уже полиморфную.
Спустя 2 часа, 11 минут, 3 секунды (7.11.2011 - 13:56) linker написал(а):
caballero
Это не классический полиморфизм, а частный случай, отдельный вид, у которого есть своё название - перегрузка и в целом никто его не рассматривает как чистый или классический полиморфизм. И т.к. данная тема имеет название ООП, то мы говорим, что полиморфизм тесно связан с наследованием, а так как данная тема в контексте PHP (а именно динамической типизации), то мы отбрасываем перегрузку, как не имеющую реализации на уровне языка. Собственно даже PHP-шное неявное преобразование типов является полиморфизмом, но никто об этом не говорит именно в этом контексте.
Это не классический полиморфизм, а частный случай, отдельный вид, у которого есть своё название - перегрузка и в целом никто его не рассматривает как чистый или классический полиморфизм. И т.к. данная тема имеет название ООП, то мы говорим, что полиморфизм тесно связан с наследованием, а так как данная тема в контексте PHP (а именно динамической типизации), то мы отбрасываем перегрузку, как не имеющую реализации на уровне языка. Собственно даже PHP-шное неявное преобразование типов является полиморфизмом, но никто об этом не говорит именно в этом контексте.
Спустя 29 минут, 1 секунда (7.11.2011 - 14:25) caballero написал(а):
Пусть так.
Но тогда переопределение функции при наследовании - тоже частный случай.
собственно, в ООП все, кроме инкапсуляции - дополнительные плюшки, хоть и общепринятые но вовсе не обязательные.
Но тогда переопределение функции при наследовании - тоже частный случай.
собственно, в ООП все, кроме инкапсуляции - дополнительные плюшки, хоть и общепринятые но вовсе не обязательные.
Спустя 18 минут, 42 секунды (7.11.2011 - 14:44) linker написал(а):
Переопределение метода при наследовании как раз и есть основа полиморфизма в ООП.
Ну для хоумпаги может одной инкапсуляции и хватит, хотя даже и без неё можно обойтись, а ещё лучше обойтись и без ООП. Собственно это как бы не плюшки, а парадигмы ООП.
Ну для хоумпаги может одной инкапсуляции и хватит, хотя даже и без неё можно обойтись, а ещё лучше обойтись и без ООП. Собственно это как бы не плюшки, а парадигмы ООП.
Спустя 16 минут, 35 секунд (7.11.2011 - 15:00) twin написал(а):
linker
Цитата |
Ну для хоумпаги может одной инкапсуляции и хватит, хотя даже и без неё можно обойтись, а ещё лучше обойтись и без ООП. |
В 99% программ на PHP можно обойтись.
Ибо это и есть набор хоумпаг.
Ибо это и есть набор хоумпаг.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки