Программирование на PHP. Изучаем PHP и MySQL правильно

Новости 16.06.2019
Новости

Язык программирования PHP на сегодняшний день является, определенно, самым популярным языком веб-разработки. Имеет как огромную армию почитателей, так и достаточно большое количество недоброжелателей (в особенности представителей «серьезных» языков программирования, таких как Java, Python или Perl). Так или иначе, с его появлением процесс создания динамических веб-сайтов перестал быть уделом «избранных». В этом компасе представлены основные сведения о PHP для начинающих его изучать.

Что такое PHP? Краткая справка.

Для начала. Крупные интернет проекты, разработанные c помощью PHP

Для тех, кто считает, что c помощью PHP нельзя сделать ничего серьезного. Стоит, однако, отметить, что большие проекты, как правило, используют несколько различных языков программирования.

История возникновения.

Первые шаги. Что делать?

Вы решили начать изучать PHP, с чего начать? Сначала - прочитать руководство «самые основы» и «Хочу изучать PHP и Mysql. С чего начать?» Потом - установить PHP на вашем локальном компьютере. Дистрибутив PHP можно скачать с официального сайта (во вступительных статьях описан процесс пошаговой установки), или, проще - установить Денвер. Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») - проект Дмитрия Котерова , набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера - удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе. Этот пакет имеет очень широкую известность в России, по некоторым данным, им пользуются 80% разработчиков на PHP. На сайте есть подробная инструкция по установке и настройке этого дистрибутива.

Самая простая программа на PHP



Пример

echo «Привет, я — скрипт PHP!»;
?>


Чем редактировать?

Изучаем дальше.

Полезные ресурсы для дальнейшего погружения в тему. Уроки, статьи, примеры кода.

Эта статья не научит вас программировать на PHP, а просто выведет на правильный путь. Я постараюсь рассказать о том, как правильно учить этот язык (в принципе, это будет относиться не только к PHP). Про синтаксис и функции рассказывать я не буду - незачем. Есть статьи, в которых все это очень хорошо изложено. Постараюсь дать наиболее лучшие ссылки на учебники и справки по PHP.

Для начала немного теории.
PHP - это скриптовый серверный язык программирования, код которого вставляется непосредственно в html-код. "Отцом" PHP считается Расмус Лердорф. На данный момент PHP расшифровывается как "PHPHypertext Processor", хотя первоначально был "Personal Home Page". Приведу небольшой пример вставки php в html-код:

<? print "Hello world!"; ?>

В результате сообщение "Hello world!" будет выведено в заголовке окна. Все очень просто. Это, надеюсь, понятно. Двигаемся дальше…

Как вы поняли, это совсем ненужная функция, потому что сообщение "Hello world!" можно вывести и без PHP. Но на php можно сделать гораздо больше, чем вы можете себе представить. Гораздо.

На самом деле, если вы даже еще никогда не пробовали программировать, то будет все равно не тяжело, хотя бы, если вы учили математику в средней школе. Я так думаю. Если сравнивать его с такими языками как Perl или Java, PHP - язык довольно-таки простой. Он был создан для разработки небольших приложений, поэтому ничего сложного в нем нет. Ну, а если вы уже имеете небольшой опыт (например, программируете на языке Pascal), то вам будет еще легче.

Если вы хотите научиться программировать на PHP, просто найдите хороший учебник (а еще лучше купите, если средства позволяют). Самое главное в этом деле - именно хороший, и притом один. Не нужно "распыляться", как делал это я, когда знакомился с этим языком программирования. Один учебник, который вы просто прочитаете для ознакомления, справочник функций, который вы будете использовать при составлении скриптов, и, конечно же, форумы и друзья, знающие PHP. И все! Самое главное в этом деле практика. Не перечитывайте все статьи, которые вам попадутся в Сети - только время зря потеряете (хотя теория, конечно же, нужна). Просто практикуйтесь - это самое главное в этом деле. Что-то не получается - спрашивайте на специализированном форуме. Хочу посоветовать Клуб php-разработчкиков: www.phpclub.ru .

Теперь о документации. Если же эти самые средства не позволяют вам купить книгу, то найдете в Сети: их там множество. Вы знаете английский? Вообще, прекрасно. Самая лучшая документация на английском языке. Но если вы английский не знаете, отчаиваться не стоит. Есть масса неплохой литературы на русском языке.

Ну, а теперь и ссылки на саму документацию. Самая лучшая документация, на мой взгляд.
Английские:
www.php.net - официальный сайт.
www.php.net/manual/en - документация на английском языке.

Есть в веб-программировании такие дисциплины, основы которых обязан знать любой человек, связанный с всемирной паутиной. Поэтому, так или иначе, а изучать PHP и MySQL вам придется. А если не хотите, то жадность все равно заставит:

Зачем изучать php и MySQL?

Такой вопрос могут задавать лишь те, кто совсем не знаком со спецификой построения веб-пространства и ее современной основой. Любой мало-мальски сведущий в программировании человек скажет, что эти две дисциплины являются на сегодняшний день главенствующими во всемирной паутине. А это значит, что почти весь интернет построен на основе PHP и MySQL :


Хотя в наше время значение PHP немного уменьшилось. И все из-за большого количества движков, которые (по иронии ) также построены на основе этого языка.

В современном веб-мире под движками понимают любую систему управления контентом (Content management system, CMS). Большая часть из них написана на PHP и MySQL.

Каждая CMS представляет собой программную основу, снабженную пользовательским интерфейсом. Его инструментарий во многом облегчает процесс администрирования сайта. Но тогда зачем заниматься изучением PHP с нуля? Ведь можно просто зайти в административную часть ресурса и произвести все манипуляции с помощью встроенных в нее средств.

Начнем с того, что не у многих хватает терпения, времени или сил заниматься изучением PHP и MySQL . К этому человек должен прийти сам. Но тот, кто решится постигнуть эти дисциплины, получит:

  • Востребованную профессию – на рынке труда толковые программисты всегда были нарасхват. Но даже неопытные новички с хорошими теоретическими знаниями PHP и небольшим опытом в веб-программировании смогут найти работу с достойной оплатой;
  • Удаленную работу – для того чтобы заниматься программированием не обязательно рано вставать, добираться на работу и соблюдать дресскод. Все это можно оставить за порогом, и создавать программный код, сидя дома в комнатных тапочках;
  • Экономию денег – если вы являетесь владельцем сайта, то конечно знаете, что услуги профессиональных веб-программистов стоят дорого. А для начинающего свое дело в интернете дорога каждая копейка. Самостоятельное обучение MySQL и PHP позволит сэкономить средства и пустить их в нужное русло.

Как уже отмечалось, большинство современных движков работают на основе PHP . Хотя их отказоустойчивость и находится на высоком уровне, но влияние человеческого фактора никто не отменял. Поэтому код CMS иногда ведет себя не так, как задумал веб-программист.

И чтобы исправить эту ошибку, нужно искать специалиста, платить ему большие деньги. А потом оказывается, что вся загвоздка была лишь в одной строчке кода, которую можно было легко исправить даже со знанием лишь базовых основ PHP .

  • Интересное хобби – веб-программирование это не только средство зарабатывания денег или их экономии. Это еще и увлекательное занятие, которое совмещает в себе как техническое начало, так и творческую составляющую.

Изучение PHP и MySQL для многих может стать средством самовыражения.

Что такое PHP

PHP относится к скриптовым языкам программирования. Чаще всего он применяется для создания веб-приложений и веб-сервисов. Данный язык поддерживается большинством хостингов в интернете. На его основе написана основная часть динамических сайтов.

В динамическом сайте в отличие от статического, созданного лишь на html, содержимое всех страниц формируется в ответ на пользовательский запрос. Структура ресурса формируется на основе файлов шаблона, а содержимое (чаще всего) загружается из баз данных.


Популярность PHP объясняется его следующими характеристиками:

  • Поддержка большинства популярных СУБД (Систем Управления Базами Данных );
  • Автоматическая отправка заголовков HTTP ;
  • Встроенная поддержка работы с сессиями и cookies;
  • Средства работы с удаленными файлами;
  • Поддержка XForms (формы, созданные на основе XML );
  • Приближенность синтаксиса PHP к языку C;
  • Отсутствие строгой типизации – типизация переменных осуществляется динамически.

Типы данных – это то, с чего начинают изучение PHP

  • Поддержка ООП (объектно-ориентированного программирования );
  • Большой набор суперглобальных (предопределенных) массивов, предназначенных для работы с веб-пространством.

Что такое MySQL?

MySQL – это свободно распространяемая СУБД от компании Oracle . Вместе с бесплатной версией ведется разработка и коммерческих выпусков под заказ. Именно благодаря этому все новые разработки корпорации обязательно внедряются и в бесплатные выпуски СУБД :


Особенности СУБД MySQL :

  • Поддержка механизма репликации данных, начиная с первых выпусков MySQL .

Репликация – процесс синхронного копирования всех изменений источника сразу на нескольких его экземплярах. То есть любое действие над данными одной копии объекта отразиться и во всех остальных его образцах.

  • Поддерживается работа, как с локальными источниками, так и с удаленными;
  • Встроенная поддержка большого количества типов таблиц. Причем благодаря открытому коду список поддерживаемых типов таблиц увеличивается;
  • Широкий диапазон кроссплатформенности;
  • Размер таблиц баз данных MySQL ограничивается лишь возможностями операционной системы, на которой развернута СУБД ;
  • Поддержка большинства популярных языков программирования с помощью API (интерфейса прикладного приложения ).

Более подробную информацию о возможностях СУБД можно узнать из любого самоучителя или справочника по MySQL.

С чего начать?

По горькому опыту многих новичков можно сделать вывод, что главной проблемой самостоятельного изучения PHP и MySQL является выбор правильного программного обеспечения. И все из-за того, что PHP является серверным языком программирования. Поэтому для тестирования кода нужен не только специальный редактор, но и локальный сервер:


Несколько оптимальных вариантов:

  • Apache HTTP Server – можно скачать на официальном сайте разработчика;
  • Денвер – наиболее оптимальный вариант для установки и дальнейшего использования. Пакет инсталляции включает в себя сервер Apache, PHP и MySQL . В первом варианте вам бы пришлось все это скачивать и устанавливать по отдельности.


  • XAMPP – набор, включающий в себя PHP и MySQL . А также встроенный самоучитель по PHP :


Оба набора включают в себя утилиту для создания и изменения баз данных на основе MySQL с помощью запросов на T-SQL . Но для написания кода на PHP понадобится редактор с поддержкой синтаксиса этого языка. Несколько наиболее подходящих вариантов:

  • PHPEdit ;
  • Microsoft WebMatrix ;
  • Kantharos PHP IDE ;
  • Adobe Dreamweaver .

Сегодня многие говорят о функциональном программировании, но не каждый сможет с уверенностью сказать, что следовал всем принципам данного способа написания программ. Главной причиной этому является наше однонаправленное мышление и обыкновенное незнание. В этой статье мы разберём основные принципы функционального программирования на PHP.

Важные аспекты функционального программирования

Начнём с терминов. Википедия определяет функциональное программирование как “парадигму программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних”. В данном способе программирования главным объектом манипуляции являются функции, в то время как в императивном программировании главным принципом является последовательное выполнение команд для достижения желаемого результата.

Когда я сказал, что главным объектом манипуляции являются функции, я имел в виду, что с ними мы можем делать всё, что угодно: передавать как аргументы в другие функции, определять функции в функциях, использовать функции в качестве возвращаемых значений! В общем, кругом одни функции.

Теперь давайте подойдём ближе к некоторым особенностями функционального программирования.

Неизменность

Свойством неизменности обладают значения, которые не могут быть изменены. В PHP и многих других языках их называют константами.

Рекурсия

Рекурсия - это один из часто используемых приёмов в функциональном программировании. При императивном подходе, для прокрутки по массивам мы можем воспользоваться циклами for или foreach, записывая текущее значение во временную переменную. Из-за принципа “неизменности”, данный подход неприемлем для функционального программирования.

Предположим, что мы хотим получить сумму элементов массива (забудьте о array_sum()). При функциональном подходе, решение данной задачи будет выглядеть так:

Если массив пустой, то сумма элементов будет равна 0. В случае если в массиве больше элементов, мы применяем рекурсию.

Чистые функции

Если функция никаким образом не меняет значения переменных, которые находятся за её пределами и не осуществляет действия по вводу/выводу данных в файл, базу данных и т.д., то такую функцию можно назвать чистой.

Возвращаемое значение чистых функций будет всегда одинаковым для одного и того же набора входящих параметров. В этом случае, мы можем не переживать за работоспособность программы в целом, если заменим вызов чистой функции на вычисленное значение. Все математические функции - это чистые функции, в то время как функции работы с датой и rand() - нет.

Функции высших порядков

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

Лямбда функции

Лямбда функции (также известные, как анонимные функции) - это ничто иное, как функции без названия. Работа с подобными функциями осуществляется через переменную, которой данная функция была присвоена.

Возможность создания подобных функций есть во множестве языков. Вы наверняка уже писали их в вашем JavaScript коде, когда реализовывали функции обратного действия при работе с ajax.

$("#myButton").click(function () { // do something });

Приведённый фрагмент кода - это ничто иное, как создание анонимной функции.

В PHP лямбда функции появились в версии 5.3:

Когда речь идёт об анонимных функциях, очень важно понимать область видимости переменных. К примеру, в JavaScript анонимные функции имеют доступ к переменным за их пределами, а в PHP - нет.

Замыкания

Иногда всё же возникает необходимость иметь доступ к какой-то переменной, которая находится за пределами анонимной функции, но не является входящим параметром. Для того чтобы получить доступ к подобным переменным, можно воспользоваться замыканиями, используя ключевое слово use:

В этом случае, мы не передаём переменную как входящий параметр функции, а получаем к ней доступ, используя use.

Каррирование и частичное применение

Функции частичного применения - это функции содержащие другие функции, которые работают с набором аргументов родителя.

В PHP мы можем создавать подобные функции при помощи замыканий. Ниже вы можете найти пример вычисления объёма коробки. Все аргументы являются необязательными. Однако, если передать меньше 3х параметров, то запустится ещё и другая внутренняя функция.

В первой проверке мы проверяем количество аргументов. Если оно равно 3, то возвращаем результат. Если изначальное количество аргументов меньше, вызываем другую функцию, которая пытается найти решение с заданными данными.

Таким образом, мы можем вычислить размер коробки, передав сначала один аргумент, а потом и другие.

Каррирование - это специальный вид функции частичного применения, когда каждый аргумент может быть принят в отдельную функцию. Что-то типа f(x,y,z) to f(x)(y)(z). В PHP такой синтаксис невозможен, но реализовать принцип можно.

Плюсы и минусы

В использовании функционального подхода есть множество плюсов. К примеру, анонимные функции можно использовать в качестве функций обратного вызова. Как в фрэймворке Slim:

get("/home", function () { // show home page });

В данном примере, анонимная функция запустится, когда пользователь зайдёт по адресу home.

При функциональном подходе нужно писать функции, которые выполняют какую-то свою узкопрофильную задачу, не затрагивающую какие-то глобальные вещи. Следуя данной парадигме, ваши программы не будут разбухать.

Однако стоит заметить, что не все приёмы данной парадигмы можно реализовать в PHP. В качестве примера, можно привести работу с параллельными процессами.

Также не всегда можно определить сложность рекурсивной функции и её эффект на производительность кода. Иногда стоит отойти от функционального принципа.

Наверное самым большим недостатком функционального подхода является то, что нужно отказаться от императивного мышления. Если это сделать, то новый подход к программированию может даже и увлечь.

Итог

Функциональное программирование - это больше, чем просто подход. Это больше способ мышления, причём вне зависимости от языка.

Появилась мысль рассказать Вам о языке PHP . Головной сайт разработчиков этого языка http://www.php.net , на нем Вы сможете скачать интерпретатор языка и узнать о языке практически все (для тех кто не боится английского).

Я не буду Вам ничего рассказывать о том кто, когда и зачем создал этот язык. Не все ли равно?! Если Вам интересно, то в интернете легко найдете информацию об этом. Скажу только, что это простой и очень мощный язык для создания динамических веб-страниц. Он специально разрабатывался для этого и поэтому любая работа с текстом и данными в любом проявлении на PHP делается легко и красиво.

Сейчас пока не будем ничего говорить о его настройке. Скорее всего Вы пользуетесь уже готовым хостингом с установленным PHP , поэтому его уже настроили за Вас. Квалификация и знания администратора сервера не известны, потому как его настроили трудно сказать. Этот шаг я хочу посвятить именно этому. Моя задача страшно напугать Вас, чтобы при разработке своих программ Вы боялись за всё. Интернет полон мошенниками, хакерами, ламерами и другими компьютерными сущностями:) Ваша программа должна уметь противостоять всем. Она должна справляться с ошибками настройки, которые допустил администратор, она должна адекватно обрабатывать мудреные запросы, которые пытается скормить ей хакер, или ошибочные запросы посылаемые другими. Проще говоря Вы должны научиться разрабатывать программы для Интернета на PHP так, чтобы они были готовы ко всему. Только так можно будет говорить о правильности работы, а главное безопасности ваших данных, сайта и возможно даже всего бизнеса.

Кратко попытаюсь сформулировать основные требования к хорошей программе на PHP , с которой будет мало проблем.

Первое - это встраивание программы в код HTML страницы. Думаю не секрет для Вас, что PHP файл - это обычный файл HTML со специальными вставками кода на языке очень сильно по синтаксису напоминающем С/С++ и Perl . Так вот вставки кода эти отделяются от HTML документа специальным символами начала кода и его конца ?> :

HTML документ

Hello world на PHP

"; ?>

Опять HTML документ

Знающие люди сразу спросят, а почему именно так? Ведь можно отделять короче, с помощью символов или <% %> .

А я отвечу, вы правы... Но вы заблуждаетесь:) И объясню почему. Такой стиль выделения кода задается специальными опциями в файле конфигурации, а именно опциями short_open_tag это для и опцией asp_tags для <% %> . Из начальной установки "на добро" я полагаю, что администратор настроил ваш PHP мизинцем левой ноги, поэтому не хочу полагаться на качество этой работы. Поэтому говорю просто "выкиньте это из головы", чтобы не обнаружить вдруг, что Ваш навороченный скрипт на PHP не работает вообще.

Второе - контроль ошибок кода. Если настроить интерпретатор PHP так, чтобы он контролировал все возможные ошибки, то Вы сразу же защитите себя от множества подводных камней. За эту настройку отвечают несколько опций error_reporting и display_errors . Первая из них контролирует "глубину" контроля ошибок, а вторая возможность отображения ошибок непосредственно в тело создающегося документа. Для нас продпочтительнее выводить все ошибки, независимо от того, как настроен PHP администратором. В этом случае мы будем получать предупреждение о любом изъяне уже на этапе разработки. Для того, чтобы установить свои значения этих параметров на время работы программы, существует функция ini_set() . Давайте попробуем два варианта программы.

Первый вариант:

Второй вариант:

Первой строчкой мы включаем вывод ошибок, если он оказался отключенным. Вторая строчка задает фильтр ошибок по их важности. В первом варианте используется E_ERROR для вывода только критических ошибок, а во втором E_ALL заставляет выводить все сообщения.

Переменная $i=""

И во втором случае:

Переменная $i=" Notice: Undefined variable: i in /home/www.сайт/1.php on line 4 "

Как видите, мы переменную $i нигде не определяли, а пытаемся вывести ее значение. В принципе это ошибка не критическая, поэтому в первом случае никаких предупреждений выведено не было, а второй прямо между кавычек вставил грозное предупреждение. В случае, когда у Вас получается большой код с сотнями различных переменных одна единственная опечатка может привести к неправильной работе, а если выполнение программы зайдет в опасные участи, где удаляются или модифицируются данные, то тогда опечатка может стоить очень дорого. Поэтому вывод предупреждений о использовании несуществующих переменных становится очень важным при отладке кода, прежде чем пустить его "в бой".

У параметра error_reporting есть еще одно значение E_STRICT , которое было введено в версии PHP 5 для еще большей проверки совместимости и работоспособности кода во время работы. Поэтому для совместимости с другими версиями напишем такой код:

")==1) { ini_set("error_reporting", E_ALL | E_STRICT); } else { ini_set("error_reporting", E_ALL); }; ?>

Полученный код, в зависимости от версии PHP , автоматически подстроится под нужный уровень вывода сообщений об ошибках в коде. Этот кусок я Вам рекомендую всятавлять в любой новый файл, который вы создаете, по крайней мере на этапе разработки и отладки.



Рекомендуем почитать

Наверх