- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
по-разному говорят, я привык говорить о перегрузке функций в стиле этого автора http://gamedev.gameslife.ru/cpp/cpp_article3_1.html#_toc2
DeveloperRu добавил 22.07.2009 в 13:55
Храк, про 0,02 сек ты может и прав, но у тебя и система-то не такая сложная, к тому же функциональность пока что слабая
когда нарастишь функционал, добавишь голосования и прочее в количестве хотя бы 20 модулей - тогда и поговорим, посравниваем с битриксом и прочими аналогами по скорости
HraKK писал: "Вообще private можно использовать только в final классах, в других надо protected. А во вторых, как бы тебе объяснить, это не моя прихоть, это архитектура на ооп"
Бредятина - видимость расставляется по требованиям задачи, ну никак уж ооп, а тем более маразм насчет final. Мне даже любопытно откуда ты такой хрени набрался? Ей богу лучше бы ты этого не писал.
класс CMS. Респект ТС!
Простой и работающий алгоритм:
1. сохранить во временный файл
2. переименовать текущий файл в старый
3. переименовать временный в текущий
Я поперхнулся пивом, негодяй! :)
Что тебе плохого сделали производители винчестеров что ты из за одного комментария будешь файлам по несколько метров с комментами устраивать танцы по винту?
Насколько быстрее ты на сервере при таком подходе запилишь дисковый массив подумал?
Почитай как устроены БД нормальные - не читай быдлокод где каждая таблица - просто Excel лист и все.
У базы данных есть главное свойство - состояние целостности информации в любой момент времени.
То есть случается какой-то слет: часть инфы может потеряться, но ее целостность не потеряется никогда.
Почитай про индексные массивы на таких БД как SQL Server, PostgreSQL и как в реальности работают БД.
Вывести информацию по ID это не задача работы с информацией.
Ее любая блондинистая мартышка с мышкой в руках сделает.
Не изобретай велосипед - лучше научись на нем ездить.
Я серьезно - прочитай что такое разделяемый пул, структура индексов, внутреннее представление данный.
И еще - делай промышленные решения, а не творчество на коленке.
Работа на файлах это все равно что обычные кухонные ножи сейчас не отливать а ковать в кузнице по спецзаказу.
Насколько легко, настолько и продуктивно.
ZiNTeR2001 добавил 24.07.2009 в 22:36
Аргументы? Почему нельзя писать распределенные системы на ФП? Особенно если брать предназначенные для подобного языки, например erlang.
Потому что ООП подход позволяет нам реализовать функционал, который в полной объеме лежит за гранью нашего понимания, и интеллекта.
Сложность и поведение ООП кода намного превышает суммарную сложность его отдельных модулей.
Ты создал единую нотацию, и только и делаешь что ей следуешь.
Ты разбиваешь неосознаваемую задачу на иерархию маленьких описанных кодом правил и все работает.
у ФП есть понятие функция и все.
у любого объекта ООП есть понятие состояние и на один и тот же запрос объект в зависимости от своего состояния может отработать по разному.
+ не забывайте что мы код пишем в идеальных условиях, а работает он в реальности - а реальность это постоянные ошибки.
В ООП коде можно один раз описать стандартную реакцию на ошибку и потом вести доработку, не прекращая деятельности живого проекта.
в ФП надо на каждом шаге деалть проверку - нет ли ошибки вручную.
К тому же почитайте книгу Гради Буч-а "Объектно ориентированный подход и проектирование с примерами на языке C++"
Там приведена статистика, что обычно при ФП подходе когда размер программы приближается к 10 000 строк, разработчик теряет над кодом контроль. Сколько строк в том же WordPress-e?
К тому же единственную нобелевскую премию программисту (нобелевка дается на за само открытие, а за то, насколько оно применяется на практике и облегчило людям жизнь) в 85 году получил Страуструп за теоретическую разработку ООП подхода!
Перед тем как спорить все же лучше почитать первоисточники, однако.
ZiNTeR2001 добавил 24.07.2009 в 22:53
Под принципиальность я понимаю постоянную проверку на инстансоф, максимальная приватность класса (да, это бывает неопраданно) ну и вообще полную об-ориентированность, которой не место в вебе!
protected $responseArray = array();
public function __construct( array $responseArray )
{
$this->responseArray = $responseArray;
}
Какой смысл проверять на array, это пустое?
if( class_exists( $responseClass ) )
ага, а если не нашли, промолчим?)
if( !$responseObject instanceof Core_Response_Interface )
тоже проверка на соответствие интерфейсу, зачем она? как вы писали - чтобы ошибок небыло вдруг. Но вы наверно знаете зачем существуют исключения? Весь предохранительный ооп код лишен смысла, лучше писать с целью написать а не закрыть маловозмож ошибки, которые должны ловится исключениями, я прав?
вообще показанный класс можно было сделать более наглядно процедурно прямо в коде, откуда он должен был вызываться, не вижу смысла в этом десятке строчек как классе
Прочитай про 4 основы ООП подхода: абстрагирование, инкапсуляцию, модульность, иерархичность а потом уже подумай - стоит ли задавать вопросы, ответы на которые описаны во введении в нормальных книгах по ООП.
максимальная приватность класса - это инкапсуляция. Один раз написали отдал как готовое решение. Кто бы как это класс объектов не использовал - он всегда будет работать одинаково!
Повторное использование кода, знаете ли
постоянную проверку на инстансоф - ООП подход подразумевает жесткую типизацию. Постоянные проверки на instanceof связаны с косяком PHP. Конкретнее - чтобы нельзя было как в анектоде скрестить Слона с Обезьяной, а потом думать что с этой фигней делать.
Какой смысл проверять на array, это пустое - потому что не проверишь, будет пустое, обратишься к нему а оно тебе сообщение отдаст "упаковка куекн абырвагл 34833293/240 " - после этого сиди и ищи себе ошибку. :)
Хотя вообще по нотации PHP5 следует использовать
тогда как только в try{} на любой строке появится ошибка - код в этом блоке ДАЛЕЕ не выполняется, идет переброс в catch и делается то что в нем.
final выполняется в любом случае - было ли исключение или нет.
Система должна сама корректно отрабатывать ситуацию, когда возникает ошибка, а не крашиться полностью при первом notice
Вообще-то, есть только три основы, на которых базируется ООП: наследование, инкапсуляция, полиморфизм.
но мне, все же, интересно, что вы имели в виду под "абстрагирование", "модульность", "иерархичность"?
Вообще-то, есть только три основы, на которых базируется ООП: наследование, инкапсуляция, полиморфизм.
но мне, все же, интересно, что вы имели в виду под "абстрагирование", "модульность", "иерархичность"?
Лучше возьмите ссылку и почитайте, ка я писал ранее - не вижу смысла переписывать своими словами то, что без меня гораздо лучше описали + не сторонник мегабайтных комментариев.
http://www.helloworld.ru/texts/comp/other/oop/index.htm
Точнее тут http://www.helloworld.ru/texts/comp/other/oop/ch02.htm
С момента:
Каждый стиль программирования имеет свою концептуальную базу. Каждый стиль требует своего умонастроения и способа восприятия решаемой задачи. Для объектно-ориентированного стиля концептуальная база - это объектная модель. Она имеет четыре главных элемента:
Для совсем ленивых можно, правда сделать так: :)
Абстракция фокусируется на существенных с точки зрения наблюдателя характеристиках объекта.
Инкапсуляция скрывает детали реализации объекта.
Модульность позволяет хранить абстракции раздельно.
Абстракции образуют иерархию.
На всякий случай плюсы в карму не мне, а Гради Буч-у
zzeus, фп по определению не может хорошо поддерживатся. Приведи пример как можно легко подменить например работу с базы на файлы на фп? Только извратами с эмуляцией ооп на фп.
DeveloperRu, бла-бла-бла. У меня там функциональности очень много. А твои "головосания" это вообще плевое дело. Хоть 100 модулей, потому что юзается pattern Lazy initialization
blogolet,
Бредятина - видимость расставляется по требованиям задачи, ну никак уж ооп, а тем более маразм насчет final. Мне даже любопытно откуда ты такой хрени набрался? Ей богу лучше бы ты этого не писал.
Как только ты поставишь метод private значит этот метод нельзя перегрузить, а значит нарушается полиморфизм. И нельзя подменить этот класс другим. А еще для этого класса нельзя будет сделать Unit test. Это мой последний детальный ответ Вам. Потому что с Вами мне разговаривать не о чем.
HraKK добавил 25.07.2009 в 00:00
ZiNTeR2001, им Гради Буча думаю рановато, достаточно сложная для понимания книга.
Хотя, я ее из-за того что брат программист на С++ прочитал первой =)
[ ZiNTeR2001, им Гради Буча думаю рановато, достаточно сложная для понимания книга.
Хотя, я ее из-за того что брат программист на С++ прочитал первой =)
Не правда - там есть картинки :)
Не конечно лучше понимаешь чем Бьёрна, но все же без годов практики многие вещи не поймешь.
Я так понял блоголет с сейф моде работать не будет?
У меня после установки выдало кучу варнингов, в админку войти нельзя, стандартные записи в блог не добавились...
Если есть возможность заставить его работать в сейф моде, скажите что надо сделать...
UPD
Попытка переноса блога с вп на блоголет тоже потерпела неудачу, прийдется все откатить назад... Жаль, а так хотелось...
Имхо - все таки отказ от мускла - очень сомнительная фича. В этом плане блоголет вордпресу проигрывает, вордпрес в отличии от блоголета работает в сайфмоде...