пятница, 4 сентября 2009 г.

С чего и как начинать изучать PHP

источник

PHP - это логическое продолжение Perl-а, со своим особым "хакерским" укладом... Так как Perl обладает замороченным синтаксисом и не предназначался для использования в среде Web, PHP очень хорошо прижился в Web - синтаксис проще, а решения такие же рецептурные и убийственно простые (делают на раз два Java и ASP, по простоте, а, следовательно, и скорости разработки). Причём уклон у PHP на UNIX - эдакое противопоставление Java (SUN) и ASP.NET(Microsoft) - поэтому здесь половина функций не работает под Windows, поэтому его так сложно изучать: так как сначала следует хорошенько прорабоать *NIX(Linux) - файловою систему, сокеты Berkley и т.п. Да и сам Интернет следует хорошенько знать – HTTP, почтовые протоколы, RFC-ы…

И завершает это всё расширения... Чем меня всегда привлекал C++ Builder (не добрался я до Delphi, но разницы большой нет) – это чарующий мир пакетов – чего только люди не придумают, и главное безумно удобно (Как это Microsoft не понимает: мобильные пакеты, которые люди делают для себя всегда сделают неповоротливый MFC… ну да ладно…). В PHP тоже существуют своеобразные расширения – GDLib (динамическая генерация изображений), PDFLib (динамическая генерация PDF), работа с базами данных, море библиотек (очень неплохих) и т.д. Их так же, как и в Delphi можно писать самому (не на PHP, конечно, на С++ :).

Вам не PHP нужен, а программирование для Web... Вот путь, который должен пройти Web-дзен:
- HTML
- Linux (поставьте себе его в качестве второй операционной системы - не пожалеете - это рай для программера :) - под ним работаю сервера в Internet и создавая Web-приложение вы создаёте его для Linux.
- Прикладные протоколы (HTTP, FTP, POP, IMAP и т.д.) чем больше, тем лучше...
- Базы данных - не надо убийственных Oracle или MSSQL (хотя под windows именно их и надо :) MySQL и PostgreSQL.
- Язык программирование... да после этого вам будет всё равно на чём программировать, ну пусть будет PHP - это на сегодняшний день самый удобный язык программирования для Web.

Порядок здесь не имеет значения, здесь важен дух и окружение. Зная Pascal вы не напишите программу под Windows - нужно знать Windows. Зная PHP вы не напишите программу для Inernet - нужно знать Internet и его окружение..

Может я, конечно, перебарщиваю с Линуксом, меня всегда самого тянуло к командной строке... Но в некоторых вещах всё-равно придётся разобраться: файловая система и права доступа, локаль (время, кодировки и т.п.), sendmail, сокеты (Не WinSock[2] а Берклевские) и т.п. Просто имея под боком Линукс - это проще...

Прикладные протоколы (HTTP, FTP, POP, IMAP и т.д.) чем больше, тем лучше - не забивайте этим голову пока - будете изучать сами придёте к необходимости и будете знать где брать (по аналогии это WinAPI - для изучения Delphi на первых парах не требуется, а некоторые умудряются и вообще без него обходится...)


1. В первую очередь необходимо проработать операторы if, switch, while, for, break, continue, логические операторы &&, ||, !, необходимо знать функции isset(), empty(), unset(), echo(), print(), конструкции include, require, include_once, require_once() (это основа и должно отскакивать как от зубов)

2. О побитовых операторах нужно знать что они есть и чем отличаются от логических (сильно на этом зацикливаться не нужно и уделить им не более 1 часа).

3. Строковые функции — в отличие от основных операторов на память их синтаксис запоминать не нужно, но необходимо чтобы при помощи их ты мог разбить строку на части по пробелу, посчитать число слов в предложении, заменить тэги [b], [/b] на их HTML-эквиваленты, получить число символов в строке, удалить фрагмент из строки, получить расширение файла, из пути извлечь имя файла, из URL параметры и т.п. Следует особое внимание обратить на функции sprintf() и printf().

4. Временные функции — необходимо чётко понимать что такое TIMESTAMP (число секунд прошедших с 1 января 1970 года) и как из него получить форматированную дату, например DD.MM.YYYY hh:ss. На локалях и универсальных функций, позволяющих работать с часовыми поясами можно пока не зацикливаться.

5. Функции для работы с массивами — их необходимо знать очень хорошо, но опять же зубрить синтаксис не нужно, лучше вообще работать всегда с мануалом. Необходимо чётко различать обычный массив, где в качестве индекса идёт число, ассоциативный массив, где в качестве индекса идёт значение (зачастую строковое) и смешанные массивы. Создание массивов, удаление элементов массивов и самих массивов, сортировка массивов и виды сортировок (проработать нужно все).

6. Работа с файлами и каталогами. Файловую систему UNIX нужно понимать досконально – владельцы, группы, права доступа (это необходимо помнить). Функции для создания, удаления, изменения прав доступа файлов и директорий тоже необходимо уметь использовать (с мануалом или книгой, запоминать точный синтаксис не нужно, но нужно помнить где посмотреть). На блокировки можно не зацикливаться — с ней будем работать мало. Но чтение из файла и разбор файлов с последующим помещением в массив должно быть поставлено очень хорошо.

7. Регулярные выражения сразу изучать не следует, но изучить их в течении ближайших двух лет обязательно. В плане они стоят после MySQL и перед Apache — если получится раньше, очень хорошо.

8. Плоские файлы — нужно знать, что такие есть, но разбираться с ними не обязательно.

9. Сессии и cookie — требуется очень хорошее их понимание, особенно механизмов работы. Использоваться будут очень интенсивно.

10. Объектно-ориентированное программирование — для работы не потребуется, но изучить (в свободное время) стоит. Во-первых, чтобы не было комплекса, что ты с этим не знаком, во-вторых часто требуется распотрошить класс.

11. Работа с FTP.

12. Работа с электронной почтой — знать необходимо только функцию mail() и пару стандартных заголовков, например, для того чтобы отправить обычное письмо и в формате HTML. Зацикливаться на этом не следует.

13. Сокеты — очень не плохо их знать, но они требуют хорошего знакомства с протоколом HTTP, который стоит в плане гораздо позднее.

14. Работа с MySQL.

PHP появился лишь недавно и он здорово эволюционирует, поэтому руководств ни электронных, ни бумажных сейчас хороших нет. Вот так чтобы взять 10 книг прочитать и знать всё... Не знаю как Delphi, а на Builder такое бывало - компилишь старые проекты под новую версию - на работают, ... их за ногу. На PHP ещё хуже - стандартов нет, преемственности кода практически тоже.

Комментариев нет:

Отправить комментарий