Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Подскажите, что почитать по PHP [2]
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Теперь я внесу ясность. Начнем с теории. Три основых принципа в ООП:
1. Инкапсуляция - в JS нету модификторов доступа. Все данные защищаютсья с помощю замиканий
var _privateMethod =function(){/* actions */}// скрытый метод
// public
this.getProperty=function(){// открытый интерфейс
return _property;
}
this.setProperty=function(value){// открытый интерфейс
_property = value;
_privateMethod();
}
}
2. Наследование - также нет такого понятия. Делается новый обьект, который сливает два или более обьектов или с помощю прототипов(как я говрил прототипное програмирование)
Как видите все ето только емуляция. но никак чистый ООП. Или я не прав? (Добавление)
nerv пишет:
Может не будем разводить холивары, а просто скажите что мне почитать по теме? Как писал DeepVarvar "все равно каждый останется при своем мнении"
А я и не розвожу холивар. Мы же не тупо орем во вес голос свое мнение. Мы доводим свою точку зрения аргументировано. Значит у нас диалог. И мне очень интересно его окончить. А вдруг я не прав и Вы меня поправите.
теперь про wordpress. Сам делал плагин для него. Скажу чесно лучше codex-а инфы вы не найдете. В большинстве случаев статти расчитаны на новичков в програмирование и описивают простие примеры(правда нашел все таки несколько десатков интересных статтей)
nerv
Отправлено: 18 Марта, 2013 - 16:26:54
Посетитель
Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013 Откуда: Россия
Помог: 9 раз(а)
Zuldek пишет:
Или речь идет о цикле разработки CMS? Тогда ~PHP Кузнецов Симдянов... 2 издание - как раз разрабатывается простенькая CMS.
Сразу проглядел. Видимо, это то, что мне нужно. Спасибо!
caballero пишет:
и ссылки на бредятину с педивикии
ну тогда иди азбуку почитай, если вики не угодила (Добавление)
esterio пишет:
Инкапсуляция - в JS нету модификторов доступа. Все данные защищаютсья с помощю замиканий
Я писал (пишу) на vb(a) и знаю, что такое private|public.
esterio пишет:
Наследование - также нет такого понятия. Делается новый обьект, который сливает два или более обьектов или с помощю прототипов(как я говрил прототипное програмирование)
CODE (javascript):
Прототипное программирование не отменяет понятий ООП. Вики гласит, что
Цитата:
Прототипное программирование — стиль объектно-ориентированного программирования
esterio пишет:
3. Полиморфизм - проверка instanceof.
Не понял, почему у вас понятие полиморфизма упирается в instanceof.
Цитата:
[url=http://ru.wikipedia.org/wiki/Полиморфизм_(программирование)]Полиморфизм[/url] позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему, которую могут называть по-разному — интерфейс, класс.
Это обычная практика на js (и не только). Возьмите тот же jQuery UI и его интерфейс/класс Widget (один, общий для всех)
esterio пишет:
Как видите все ето только емуляция. но никак чистый ООП. Или я не прав?
см. выше в этом посте "прототипное программирование - стиль ООП". На мой взгляд эти слова более чем красноречивы.
esterio пишет:
А я и не розвожу холивар
Извините! Это, скорее, больше не вам было адресовано, а некоторым несдержанным отвечающим. Сам периодически такой, куда деваться
esterio пишет:
теперь про wordpress. Сам делал плагин для него. Скажу чесно лучше codex-а инфы вы не найдете. В большинстве случаев статти расчитаны на новичков в програмирование и описивают простие примеры(правда нашел все таки несколько десатков интересных статтей)
----- Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
esterio
Отправлено: 18 Марта, 2013 - 16:56:48
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
nerv пишет:
Не понял, почему у вас понятие полиморфизма упирается в instanceof.
Ну представте что у вас есть массив с 10 разных обьектов. Полиморфизм означает то, чо у них единый интерфейс и скажум есть метод show - так вот если будет хоть один оьект который не имеет даный интерфейс будет ошыбка. поетому нужно проверять. В том же ПХП можно просто указать возле параметра функции(см. Type Hinting).
П.С. педовикия не последняя инстанция знаний (Добавление)
В догонку
Цитата:
Объекты (они же - ассоциативные массивы, хэши) и работа с ними в Javascript - реализованы не так, как в большинстве языков. С этим связано много ошибок и непоняток.
В этой статье описаны базовые свойства объектов javascript, создание и изменение, перечисление свойств и т.п.
Объект в javascript представляет собой обычный ассоциативный массив или, иначе говоря, "хэш". Он хранит любые соответствия "ключ => значение" и имеет несколько стандартных методов.
Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013 Откуда: Россия
Помог: 9 раз(а)
esterio пишет:
у представте что у вас есть массив с 10 разных обьектов. Полиморфизм означает то, чо у них единый интерфейс и скажум есть метод show - так вот если будет хоть один оьект который не имеет даный интерфейс будет ошыбка. поетому нужно проверять. В том же ПХП можно просто указать возле параметра функции(см. Type Hinting).
в js, как вы отмечали выше, существует instanceof. Кроме того, в нем есть такое понятие как "утиная типизация".
по примеру: цикл по массиву, проверяем каждый элемент массива на то, что он объект, экземпляр необходимого нам конструктора, имеет метод show и если имеет вызываем его
----- Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
esterio
Отправлено: 18 Марта, 2013 - 17:35:44
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
nerv пишет:
по примеру: цикл по массиву, проверяем каждый элемент массива на то, что он объект, экземпляр необходимого нам конструктора, имеет метод show и если имеет вызываем его
Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013 Откуда: Россия
Помог: 9 раз(а)
esterio пишет:
А я о чем. Пример с того же ПХП
Я еще не дочитал до классов в PHP , но вижу, из примера, что имеется класс Foo с методом (публичным) set.
Мой вопрос касательно
esterio пишет:
Ну представте что у вас есть массив с 10 разных обьектов. Полиморфизм означает то, чо у них единый интерфейс и скажум есть метод show - так вот если будет хоть один оьект который не имеет даный интерфейс будет ошыбка. поетому нужно проверять. В том же ПХП можно просто указать возле параметра функции(см. Type Hinting).
что мешает сделать это
nerv пишет:
по примеру: цикл по массиву, проверяем каждый элемент массива на то, что он объект, экземпляр необходимого нам конструктора, имеет метод show и если имеет вызываем его
в javascript? Когда я описывал алгоритм, я подразумевал, что он может быть реализован на js. Если вы считаете, что на js это не возможно, обоснуйте почему.
----- Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
esterio
Отправлено: 18 Марта, 2013 - 18:00:19
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Я не считаю что ето не возможно. Я лиш веду до того что ето всего лиш емуляция. Я ничево против JS не имею. Он достаточно хорошый язык. Но его использование сводится к манипуляциям с DOM и стилями в большенстве случаев. Поетому ООП там совать думаю не стоит. А вот пользоватся замиканиями, его динамикой и прочими плюшками стоит. Но зачем там емуляция наследования которую делают я не понимаю. Тот же делегатор в соседней теме - я писал что для меня ето не делегатор, а просто обработчик собития. Думаю так реагирует каждый который знает другой ЯП. например прогер на JAVA будет орать во всю горлянку что динамическая типизация зло, что ПХП недо-язык и прочее. Моя же думка что каждому свое назначение: js - работа с DOM, ПХП - веб, Java, C++ - десктоп, asambler - драйвера, boot-загружчики(тоесть очень низкоуровные компоненты системы). И то что например в том же ассамблере нету ООП неозночает что он плохой, просто у него другая специализация. (Добавление)
nerv пишет:
в javascript? Когда я описывал алгоритм, я подразумевал, что он может быть реализован на js. Если вы считаете, что на js это не возможно, обоснуйте почему.
Да отвлекся от вопроса. Я привел пример кода ПХП где не нужно делаь вручную проверку типа обьекта. За Вас ето сделает ПХП. Вот и все.
nerv
Отправлено: 18 Марта, 2013 - 18:34:02
Посетитель
Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013 Откуда: Россия
Помог: 9 раз(а)
esterio пишет:
Я лиш веду до того что ето всего лиш емуляция
1. это элементарно реализуется на JS: внутри метода set проверяем приходящий объект на соответствие экземпляра классу и бросаем исключение / генерируем сообщение об ошибке
2. что еще интересней, не исключено, что это будет реализовано в ecmascript 6 (следующем стандарте языка). По крайней мере все к этому идет
Я ничево против JS не имею. Он достаточно хорошый язык. Но его использование сводится к манипуляциям с DOM и стилями в большенстве случаев. Поетому ООП там совать думаю не стоит.
На сегодняшний день ситуация такова, что большинство сложных и средней сложности приложений на клиенте пишутся с применением ООП. Более того, если вы пишите простое приложение и в последствии захотите его расширить / сделать расширяемым, вы обязаны применять ООП. Это раз.
Два: существует серверный javascript - node.js. Уже достаточно много сервисов его использут, в т.ч. ВК и Яндекс.Почта.
esterio пишет:
Но зачем там емуляция наследования которую делают я не понимаю.
Если вы чего-то не понимаете, это еще не значит, что оно не надо Другое дело, что на js надо писать опираясь на прототипы, а не на классы (в противном случае - мама дорогая).
esterio пишет:
Моя же думка что каждому свое назначение
Зависит от умения и фантазии разработчика
UPD не знаю, что вы имели ввиду под "делегатором" (прокси/посредник?), но, как я обозначил в соответствующей теме, существует понятие "делегирование событий".
----- Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
esterio
Отправлено: 18 Марта, 2013 - 19:02:11
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Почти полностю согласен. Только не надо забывать про JScript для ІЕ. Думаю стоит заканчивать. Я пока-что останусь при своем мнени(гляди и увижу Вашими глазами). Но думаю ето со временем
armancho7777777
Отправлено: 18 Марта, 2013 - 19:23:14
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
esterio пишет:
Делается новый обьект, который сливает два или более обьектов или с помощю прототипов(как я говрил прототипное програмирование)
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Ну вот. Я подождал пока успокоились
Кто там говорил что js не объектно ориентированный язык?
А нукся опишите что есть объект?
Пральна - это такая хрень, у которой есть методы и св-ва, так?
Еще не убедились что тут все сплошь объекты?
Ах, да! Еще же есть эти, киты (кенты, три кента) ООП, мать их..
Оберну в офф: Я вам хочу напомнить, а те кто не знал, сказать, что сам я являюсь ярым противником засиранья мозгов парадигмой ООП. Но это не значит, что я его не использую. Я его использую только там, где без него никак не обойтись. Кто видел мой код в больших объемах/проектах - знает.
Так вот, если в одном ЯП что-то реализовано неким образом, это совсем не значит что в остальных оное вообще нужно.
У каждого языка своя идеология. И если кто-то начал орать, что он придумал штандарт (-нфюрер), то это не значит что надо хватать это и по быстрому реализовывать и в своем языке.
Отчего же, подумайте - сами разработчики javascript до сих пор не реализовали этих "трех кентов" из других ЯП? Ну не идиоты же они, верно?
Тогда какого /^х\w{2}$/, простите, вы лезете с идеологией других ЯП в javascript?
Ну вот по сути - зачем кому-то понадобилось вводить модификатор "private" для методов и свойств?
Подумайте, я жду любой ответ, только не вида: "Затем чтобы скрыть их от доступа извне", потому, что:
От кого вы там собрались защищаться? От самих себя любимых?
Хм.. Может от горе-разрабов,
которые кодить не умеют и решат вдруг накормить "запретный" метод левыми аргументами шоп усё упало?
Таки пусь упадёт - это их проблема.
Ладно еще когда идет речь о серверном (или компилируемом) ЯП и там нужно проверять входные данные. Исходники не всегда видно, и кто попало туда не лазиет.
А что же в js? Да вот он исходник! Какая там инкапсуляция, вы чо?
Да я с кансоли по F12 щас зайду и на лету модифицирую любой js.
Наследование? Полиморфизм? Ну заюзай прототипы,
или как сделано в некоторых js-фреймворках, клонируй объект из двух.
должен находиться в прототипе функции конструктора. В этом случае он не будет создаваться отдельно для каждого объекта, а будет общим для всех.
как вариант без конструкторов
Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013 Откуда: Россия
Помог: 9 раз(а)
DeepVarvar примерно так. Во время исполнения оборачивается (string, number etc.)
DeepVarvar пишет:
Таки нет, именно маленькая.
Цитата:
\w - Найдет любой словесный (латинский алфавит) символ, включая буквы, цифры и знак подчеркивания. Эквивалентно [A-Za-z0-9_]. Например, /\w/ найдет 'a' в "apple," '5' в "$5.28," и '3' в "3D."
----- Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
esterio
Отправлено: 18 Марта, 2013 - 22:17:51
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
DeepVarvar пишет:
Ну вот по сути - зачем кому-то понадобилось вводить модификатор "private" для методов и свойств?
Private не особо нужен, но засорять globale scope нехорошо. Почему? Да потому что две лыби использующее единое пространтво имен поубивают друг-друга /^[а-нх]{3}$/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.