- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Не сочтите за PR, но классная книжка. Я для себя много нового узнал.
Pro PHP, вам не кажется странным в рассылке "PHP5 для профессиональных программистов" выпуск об инструментарии? Вы уж лучше сделайте еще рассылку "PHP5 для чайников" и рассказывайте каждому о своем, все равно вам не удастся объединить эти две аудитории.
Kolyaj, согласен. В дальнейшем буду вести рассылки уже только для профессионалов. За двумя зайцами не угонишься...
Второй выпуск рассылки: ООП в ПХП.
Здравствуйте мои дорогие подписчики!
Жара, лето – самое время улучшить свои знания и опыт в области программирования :). Об отдыхе не забываем. Максимум две недели на отдых, если больше двух недель – то появится лень, от которой трудно в последствии избавиться.
Сегодня я хочу затронуть тему ООП (объектно-ориентированного программирования) в PHP5. Предполагаю, что все подписчики уже работают с ООП, или имеют опыт работы с ООП в других языках (C++, Java). Тем, кто не знаком с ООП, советую ознакомиться с ним и взять этот подход за правило, это поможет вам при создании крупных приложений. Советую книгу «PHP5 для профессионалов», издательства Wrox (перевод на русский: Диалектика или Символ).
При создании крупного проекта один человек не в состоянии справиться со всеми поставленными задачами в срок. Необходимо взаимодействие нескольких разработчиков, либо групп разработчиков работающих с единой целью – быстро и качественно создать программный продукт. В данный момент мы не затрагиваем вопросы «контроль версий» и «тестирование программных продуктов», этому будут посвящены следующие выпуски.
Итак, чем же помогает ООП? Каждый разработчик создает свой класс, и открывает лишь некоторые методы для внешнего обращения к его классу. Вы вызываете метод, не зная как он реализован, но знаете, что он делает то, что описано в его спецификации (описании). Например, вызываем метод FindText() класса Forum, и получаем массив результатов. Как происходил поиск – не важно, а главное - что есть верные результаты.
Вы конечно же знаете, что каждый объект одного и того же класса имеет свои свойства и методы. Все свойства в идеале должны быть срытыми от других разработчиков внутри объекта (иметь атрибут private). Если требуется открыть доступ к свойству, то делайте это так: создаете новый открытый метод (public), через который возвращаете значение скрытого свойства. Никогда не делайте свойства класса public! Вот пример:
Этот подход позволит в дальнейшем модифицировать класс User, и не затрагивать логику того кода, который использует объект класса User. Например, после создания проекта, вам поставили задачу: «идентификатор пользователя может быть возвращен только администратору, всем остальным будет возвращено false». Вносим изменения только в наш метод класса User, не затрагивая тысячи строк уже написанного кода.
Получается, что необходимо разграничивать функциональность между классами. Это не всегда так легко, как кажется. Делая ошибки и осознавая как их исправить, мы получаем опыт, именно этот опыт и дает нам возможность в следующем проекте заранее видеть, какие должны быть реализованы классы, и что каждый класс должен делать.
Давайте рассмотрим другую задачу. Бывают ситуации, когда следует создать некоторый набор классов, но все классы должны быть построены по одному образцу. Давайте сразу рассмотрим пример: «необходимо создать набор классов, работающих с базой данных. Каждый класс работает с базой данных своего типа (MySQL, PgSQL и т.д.)». Мы знаем, что у всех баз данных (БД) есть много общего, но и есть различия. Select, Insert и Delete есть у всех СУБД (систем управления базами данных, такие как MySQL). Итак, задача стоит следующим образом: «необходимо создать набор классов, каждый из которых реализует взаимодействие с СУБД своего типа». Рассмотрим пример:
Этот класс отражает те методы, которые будут содержаться в дочерних классах (таких как MySQL). Ключевое слово abstract говорит о том, что этот класс не является самостоятельным, т.е. нельзя создать объект этого класса. Можно создать новые классы на основе данного класса Database.
Опишем класс для PgSQL, который реализует те методы, которые описаны в его родительском классе Database:
Теперь реализуем класс MySQL. Обратите внимание, что в MySQL несмотря на все реализованные методы, добавляется свой собственный метод Update() который отсутствует в других СУБД.
Стоит заметить, что при реализации нового класса на основе класса Database, следует реализовать все методы родительского класса. Если хоть один метод класса Database не будет реализован – то ничего не будет работать (PHP выдаст ошибку). Этот факт позволяет вам быть уверенным в том, что все классы, построенные на основе класса Database, будут иметь набор одинаковых методов (Select, Insert, Delete).
Теперь вы хотите в своем приложении добавить поддержку баз данных MsSQL. Что вы делаете? Создаете класс с именем MsSQL который создается на основе Database, и реализуете все методы, описаны в Database. Пи этом вы не изменяете не одной строки внутри своей программы, которая может содержать много тысяч строк. Это очень удобно в применении, и экономит ваше время и силы.
Более подробно об уровнях абстракции баз данных можно прочесть в книге «PHP5 для профессионалов» и «Профессиональное PHP программирование» издательства Wrox. Так же можете посетить веб сайт php.net, где существует реализованный уровень абстракции баз данных. Однако, он очень универсален, и я не рекомендую его использовать в своих проектах по причине низкой производительности (этот класс содержит множество методов, которые вы, скорее всего, никогда не будете использовать).
Надеюсь вы узнали сегодня для себя что-то новое.
Пишите предложения по оформлению следующего выпуска, и замечания по данному выпуску.
Спасибо за внимание!
Pro PHP, уж лучше бы Вы перепечатали пару глав из рекомендуемой книги. Пользы бы было в несколько раз больше, ибо чуть дальше начала в этой книге описываются по-настоящему достойные приемы, которые экономят время. То, что Вы описываете, галопом пробежавшись по верхам ООП, более ли менее ли подкованным разработчикам известно — это не профессиональные приемы, а обычная практика.
Расскажите лучше о классах Collection с механизмом позднего инстанционирования и GenericObject, об интерфейсах Iterator и IteratorAggregate и т.д. (в книге обо всем написано). Только близко к тексту (у Вас стилистика страдает) и исправив ошибки в книжных листингах. Вот это, как я думаю, будет полезно подписчикам.
А есть ли плагин для Visual Studio 2005, чтобы она понимала php?
Николай В., расскажите об этом лучше вы, мне в самом деле интересно (без тени иронии), а то ТС таким макаром будет еще полгода мариновать, пока дело дойдет до откровений, "повышающих профессиональный уровень" :)
MasterKlass, я думаю что Майкрософт не согласится продвигать своего основного соперника в сфере веб - PHP. Как вы понимаете, Майкрософт создала бесплатную Visual Studio 2005 именно с целью продвижения своих языков программирования.
Leevoth, думаю наши специалисты могут все :). Я не встречал данного расширения в неофициальных источниках.
Всем форумчанам советую установить Google Toolbar, в котором есть интересная встроенная функция - проверка орфографии.
MasterKlass, я думаю что Майкрософт не согласится продвигать своего основного соперника в сфере веб - PHP. Как вы понимаете, Майкрософт создала бесплатную Visual Studio 2005 именно с целью продвижения своих языков программирования.
А почему бы и нет? Zend framework - набор минимально необходимых функций, delphi for php - удобная среда разработки с подключенными библиотеками. Выйдет завтра пара фреймворков под php от микрософта, пара бесплатных либ - хороших - на них все подсядут, появится среда разработки - на нее подсядут - пара версий пройдет и того и другого - уже народ будет работать на MS продуктах, и в отсутствии конкуренции вполне можно будет и либы и среду разработки сделать платными. Либы и среду можно будет сделать похожими на MS продукты - вот народ и приучится, сделать совместимость с MS языками на базе тех же либ хорошую и вуаля - php умер.
Ситуация конечно утрированная, но имхо это намного проще и вероятнее чем прямая конкуренция абсолютно другим продуктом.
Всем форумчанам советую установить Google Toolbar, в котором есть интересная встроенная функция - проверка орфографии.
А чем вам не нравится проверка орфографии в FireFox? :)