Синтаксис php
Содержание:
- Плюсы и минусы
- Сжатие строк
- Структура РНР 7
- Сложность обучения PHP
- Так что же такое PHP программирование?
- Ускоряем приложение
- Типы данных
- Что такое РНР
- Сопутствующие технологии
- Вас заинтересует / Intresting for you:
- Плюсы/минусы PHP
- Информация о процессоре
- Как стать PHP-программистом? Что нужно знать для начала работы?
- Книги по PHP:
- Краткая справка
- Создание функций с переменным числом аргументов
- Каррирование и частичное применение
- А сложно ли будет изучать PHP с нуля?
Плюсы и минусы
В использовании функционального подхода есть множество плюсов. К примеру, анонимные функции можно использовать в качестве функций обратного вызова. Как в фрэймворке Slim:
<?php $app = new \Slim\Slim(); $app->get("/home", function () { // show home page });
В данном примере, анонимная функция запустится, когда пользователь зайдёт по адресу home.
При функциональном подходе нужно писать функции, которые выполняют какую-то свою узкопрофильную задачу, не затрагивающую какие-то глобальные вещи. Следуя данной парадигме, ваши программы не будут разбухать.
Однако стоит заметить, что не все приёмы данной парадигмы можно реализовать в PHP. В качестве примера, можно привести работу с параллельными процессами.
Также не всегда можно определить сложность рекурсивной функции и её эффект на производительность кода. Иногда стоит отойти от функционального принципа.
Наверное самым большим недостатком функционального подхода является то, что нужно отказаться от императивного мышления. Если это сделать, то новый подход к программированию может даже и увлечь.
Сжатие строк
Кода мы говорим о сжатии, то на ум сразу же приходят архивные файлы в формате ZIP. PHP предоставляет возможность сжатия длинных строк без всяких файлов.
В следующем примере продемонстрируем работу функций gzcompress() и gzuncompress():
$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales. "; $compressed = gzcompress($string); echo "Original size: ". strlen($string)."\n"; /* выведет Original size: 800 */ echo "Compressed size: ". strlen($compressed)."\n"; /* выведет Compressed size: 418 */ // возвращаем $original = gzuncompress($compressed);
В наших силах уменьшить объём текста на 50%. В этих же целях можно использовать методы gzencode() и gzdecode(), которые используют другой алгоритм сжатия.
Структура РНР 7
Язык РНР 7 имеет ядро и расширения языка. Между ядром и расширениями довольно трудно провести границу, т. к. многие расширения давно включены в состав ядра или распространяются в виде скомпилированных бинарных библиотек и легко устанавливаются.
Есть и другая часть — код, созданный на РНР, который условно можно поделить на следующие типы:
компоненты — библиотеки на РНР, которые собираются при помощи менеджера пакетов Composer;
фреймворки — готовые сборки, зачастую из компонентов, при помощи которых можно создавать сайты любой степени сложности. В книге, к сожалению, мы их не касаемся, однако если вы выберите РНР 7 в качестве основного языка разработки, то не пройдете мимо них
На следующие РНР-фреймворки стоит обратить внимание: , ,. Всего их сотни, если не тысячи;
готовые приложения — готовые к использованию разработки на РНР
Это системы управления контентом (, ), форумы (), Web- интерфейсы управления базами данных (, ).
Книга, которую вы держите в руках, познакомит вас с языком; описанные выше системы созданы с использованием языка РНР, но требуют отдельного изучения, и, к сожалению, их обсуждение выходит за рамки моего блога.
Сложность обучения PHP
PHP считается одним из самых простых языков для изучения, особенно для тех, у кого не было опыта в программировании. В интернете можно найти достаточно много готовых решений или инструментов. PHP поддерживает практически все базы данных, а также протоколы и API.
Стоит отметить, что в языке могут встретиться непонятные для неподготовленного человека синтаксические конструкции. Например, может встретиться такое сообщение об ошибке, как “syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”. Начинающий программист может начать ломать голову, что за PAAMAYIM_NEKUDOTAYIM, но объясняется всё довольно просто. Разработчики языка (Сураски и Гутманс) при добавлении синтаксических элементов использовали транскрипцию с их родного языка, иврита. В данном случае это, скорее всего, означает, что было поставлено лишнее двойное двоеточие (в PHP есть такой оператор). Такие синтаксические конструкции могут периодически встречаться при программировании на PHP, поэтому можно просто погуглить документацию по языку или спросить на каком-нибудь ресурсе для PHP-программистов.
Так что же такое PHP программирование?
PHP – это язык программирования, также как и HTML и CSS.
Он не так уж сложен для изучения, как это может показаться вначале тем, кто решил взяться за него всерьез. Изучив всего несколько простых функций, вы уже сможете применять их на своем сайте, тем самым значительно повысив функциональность своего проекта.
Язык PHP может соседствовать в одном документе с языком HTML, так что вы можете вставлять код PHP в уже написанный HTML код. Эта особенность языка PHP позволяет вебмастеру добиться наибольшей свободы в своей работе.
Что имеется ввиду под выражением «добавить динамики»? То, что я имею ввиду — это возможность вариантности на сайте, в зависимости от того, какой запрос задает пользователь. Запрашивает ли он какую-то информацию в форме поиска, или, например, хочет выполнить какие-то вычисления – эти действия становятся возможными именно благодаря языку PHP.
Короче говоря, PHP используется для того, чтобы добавить функциональности сайту. С помощью применения одного html вы никогда бы не добились такого эффекта!
Вот несколько примеров того, что можно делать с помощью языка программирования PHP:
Математические вычисления.
PHP может выполнять все виды математических вычислений — от сложения, вычитания, умножения, деления до определения сегодняшней даты, дня недели и года.
PHP может хранить информацию пользователя.
То есть, пользователь может напрямую взаимодействовать со сценарием, например, вводить свои данные в форму контактов или в адресную книгу, задавать запрос через форму поиска, добавлять комментарии к статьям, заводить новые посты на форуме и т.д.
PHP может взаимодействовать с базами данных MySQL.
И, когда задействован этот пункт, то возможности практически безграничны.
Вы можете помещать информацию в базу данных, вы можете ее оттуда извлекать. Это позволит вам создавать новые страницы очень быстро, вы сможете разработать админ панель сайта, вы сможете разработать систему логинов и паролей, в конце концов, вы сможете создавать сложные динамические сайты.
С помощью PHP и различных библиотек вы сможете также управлять графикой сайта.
Например, вы сможете менять размер картинок, поворачивать их, менять их оттенок.
Ваши посетители смогут редактировать свои аватарки, а также благодаря этому возможно использование капчи на сайте. Также вы сможете, например, настроить различные дизайны для сайта соответственно времени суток и временам года.
И так далее, и тому подобное…
Список того, что можно сделать, применяя язык программирования PHP, огромен настолько, что можно очень долго перечислять все его возможности.
И это лишний раз доказывает, что знание PHP может принести большую пользу и множество перспектив человеку, изучающему сайтостроение, особенно тем, кто хочет сделать создание сайтов своим основным видом деятельности и зарабатывать на этом.
Автор статьи: Елена Лощилова.
Ускоряем приложение
Обратиться к самому языку
- Использовать OPCache. Думаю, никто не запускает PHP на продакшн без включенного OPCache?
- Дождаться RFC: Preloading. Он позволит предзагружать набор файлов в виртуальную машину.
- JIT — серьезно ускоряет работу приложения на CPU-bound tasks. К сожалению, с задачами, связанными с базами данных, он не сильно поможет.
Использовать альтернативыПолностью переписать на другой язык. хранить состояние приложения в памяти
Проблемы долгоживущей модели
Утечки памяти.
- Пишите аккуратный код, используйте проверенные библиотеки.
- Активно мониторьте воркеры. Если подозреваете, что внутри процесса утекает память — превентивно меняйте его на аналог с меньшим лимитом, то есть просто на новую копию которая еще не успела накопить неочищенную память.
Утечки данных
- Не храните активного пользователя в глобальном контексте. Все данные, которые специфичны контексту запроса сбрасываем и очищаем перед последующим запросом.
- Аккуратно обращайтесь с данными сессий. Сессии в PHP — при классическом подходе это глобальный объект. Заворачивайте его правильно, чтобы при последующем запросе он сбрасывался.
Управление ресурсами
- Контролируйте соединения к БД. Если приложение висит в памяти месяц или два, то открытое соединение, скорее всего, за это время закроется: базу передеплоят, перезагрузят или firewall сбросит соединение. На уровне кода учитывайте reconnect или после каждого запроса сбрасывайте соединение и поднимайте его заново при следующем запросе.
- Избегайте долгоживущих file lock. Если ваш воркер пишет какую-то информацию в файл — проблем нет. Но если этот файл открыт и имеет на себе блокировку, то ни один другой процесс в вашей системе не будет иметь к нему доступа до момента освобождения блокировки.
Типы данных
PHP является языком программирования с динамической типизацией, не требующим указания типа при объявлении переменных. В PHP различают следующие типы данных:
Скалярные:
- целый тип (integer)
- вещественный тип данных (float, double)
- логический тип (boolean)
- строковый тип (string)
- специальный тип NULL
Нескалярные:
- «ресурс» (resource)
- массив (array)
- объект (object)
Псевдотипы:
- mixed (говорит о том, что переменная может принимать множество типов)
- number (говорит о том, что переменная может быть либо integer, либо float)
- callback (string или анонимная функция)
- void (говорит об отсутствии параметров)
Что такое РНР
В первой статье я кратко расскажу, что же представляет из себя РНР как язык и укажу на основные преимущества и недостатки его перед другими языками программирования. Идея РНР родилась в голове некого Расмуса Ледорфома(Rasmus Lerdorf). Как предполагается, где-то в конце 1994 года. Не так давно между прочим, и именно по этой причине — по причине молодости РНР, так мало есть ресурсов на его тему. Кстати, полная расшифровка РНР звучит так — Personal Home Page Tools. На великом и могучем это звучит примерно так — персональные инструменты для домашней странички. Ну примерно так. Так вот, в начале 1995 вышла коммерческая версия, которая была гораздо шире и функциональней, и именно ей было суждено завоевать признание тысяч (в те еще времена) web — мастеров. В 1998 году появился РНР3 — тот же язык, но гораздо более усовершенствованный и переписанный заново уже другими людьми. Он стал еще более популярным во всем мире. Но довольно истории.
Так что же это за зверь такой — РНР, и с чем его прикажете подавать? PHP Версии 3.0 — язык написания сценариев, внедренный в HTML. Многое из синтаксиса заимствовано из C, Java и Perl (это тоже языки программирования), с добавлением специфичных для PHP возможностей. Задача языка состоит в том, чтобы дать возможность Web-разработчикам легко и быстро создавать динамично изменяемые html-страницы. Уж что что, а это он делает великолепно! Это и есть основное преимущество РНР — его код внедряется прямо в HTML, причем никаких ограничений не существует. Единственное условие — не забывать открывать и закрывать теги, которыми ограничивается код РНР.
Что-бы сервер узнал, что в коде страницы кроме стандартного HTML есть код РНР, надо сказать ему об этом. Сделать это просто — достаточно в нужном файле изменить расширение со стандартных *.htm или *.html на *.phtml, *.php3 или *.php Желательно первый вариант. Хотя все эти вещи зависят от администратора сервера, где расположена Ваша страничка или Ваш сайт. Кстати, по умолчанию я подразумеваю, что у Вас уже есть сайт, или по крайней мере Вы представляете, как его сделать. И еще. Иногда можно услышать мнение, что РНР совсем не нужен, ведь есть SSI. Отвечаю — РНР может делать тоже, что и SSI с такой же легкостью, но плюс к этому он может еще гораздо больше! Вот Вам и еще один плюс. Если Вы еще не определились, надо ли будет в какой то конкретный файл добавлять код РНР, смело ставьте расширение *.phtml. Дело в том, что весь код HTML интерпретатор РНР просто передаст браузеру как есть без ограничений. Из этого следует первое правило, которое Вам надо будет усвоить. Не перегружайте интерпретатор. Если есть выбор, пользуйтесь стандартным HTML-ом. Это не принципиально, но рекомендуется как признак профессионализма.
Еще один плюс РНР — это удивительная похожесть его синтаксиса с языками С, С++, Java и т.д. Точнее будет сказать, что РНР впитал все самое лучшее из этих языков и максимально избавился от их недостатков. Нет никакой необходимости выделять память, следить за типами переменных (в обычных условиях), определять переменные и т.д. Все улучшения коснулись уже 3 версии, но есть и недостатки. Один из основных — отсутствие возможности условных и безусловных переходов в скрипте. Это накладывает ограничения на большие скрипты. А точнее — ограничений нет, просто очень большие скрипты становится писать уже сложно. Впрочем, РНР разрабатывался именно как небольшие включения в HTML, и в этом качестве ему нет равных. А если учитывать еще и тот факт, что РНР удивительно легко интегрируется со всеми основными базами данных и позволяет делать много удивительных вещей. Например — прайсы с возможностью поиска информации. На CGI аналогичный скрипт получается много больше чем на РНР.
Сопутствующие технологии
При помощи РНР 7 можно быстро разрабатывать Web-сайты, однако современные реализации РНР — это не самая быстрая и эффективная часть сайта. Поэтому для запуска сайта потребуются дополнительное программное обеспечение и технологии.
- Web-сервер — программа, которая обеспечивает взаимодействие клиента и вашего приложения посредством протокола HTTP. На протяжении всей книги мы используем встроенный РНР-сервер, хотя для эксплуатации настоящего сайта потребуется Web-сервер или .
- Сервер базы данных — данные нужно где-то хранить. В книге довольно подробно рассматриваются две базы данных: и . Однако это далеко не все базы данных, которые вам встретятся на практике, да и каждая из затронутых заслуживает отдельной книги.
- Система контроля версий Git, которая служит для хранения истории разработки, резервного копирования, доставки кода на сервер, организации командной работы. Работаете ли вы в коллективе или в одиночку — в настоящий момент превратился в основной инструмент современного программиста, какой бы язык программирования не был выбран в качестве базового.
Этот список можно продолжать и продолжать. Однако на самом деле можно начать даже без этого — опираясь просто на язык РНР.
Вас заинтересует / Intresting for you:
Что такое РНР? 627 просмотров Natalia Thu, 07 Feb 2019, 16:31:57
Как работает фильтр Google Omi… 322 просмотров Игорь Воронов Sat, 14 Mar 2020, 18:03:25
JavaScript: свойство userAgent… 3642 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 05:23:00
Объект Navigator Javascript: и… 2825 просмотров Денис Tue, 25 Sep 2018, 06:30:01
Author: Zero Cool
Другие статьи автора:
Плюсы/минусы PHP
Плюсы языка, кроме легкости в изучении и популярности, следующие:
- В интерпретатор встроены все основные функции, поэтому не нужно подключать никаких модулей. Также в стандартной версии языка уже есть большая часть необходимых разработчиков модулей;
- Поддерживает большинство баз данных;
- Вывод ошибок прямо на веб-страницу (хотя, при неправильной настройке это может стать и минусом, так как их увидят и посетители сайта);
- Есть много библиотек и расширений, практически ничего не нужно создавать с нуля;
- Доступность для большинства платформ — Windows, Linux, Unix, MacOS;
- Поддерживается на любом хостинге (вряд ли удастся найти такой, который не поддерживает);
- Поддерживается большим сообществом разработчиков;
- Легко найти вакансию или зарабатывать фрилансом.
Теперь рассмотрим минусы:
- Проблемы с безопасностью;
- Плохо подходит для создания GUI-приложений;
- Отсутствие многопоточности;
- Нет обратной совместимости между разными версиями языка (это проблема есть и во многих других языках программирования);
- Проблема с поддержкой юникода;
- Относительно невысокая зарплата программиста среднего уровня, так как дефицита PHP-программистов никогда не было.
Информация о процессоре
Для этого необходимо использовать метод getrusage(). Но учтите, что на Windows эта функция работать не будет.
print_r(getrusage()); /* prints Array ( => 0 => 0 => 2 => 3 => 12692 => 764 => 3864 => 94 => 0 => 1 => 67 => 4 => 0 => 0 => 0 => 6269 => 0 ) */
Картина, изложенная выше, будет понятно тем, у кого есть опыт в системном администрировании. Для всех остальных предлагаем расшифровку:
- ru_oublock: количество операций блочной записи
- ru_inblock: количество операций блочного чтения
- ru_msgsnd: количество отправленных сообщений
- ru_msgrcv: количество принятых сообщений
- ru_maxrss: максимальный размер невыгружаемого набора
- ru_ixrss: общий объем разделяемой памяти
- ru_idrss: общий объем неразделяемых данных
- ru_minflt: количество используемых страниц памяти
- ru_majflt: количество ошибок отсутствия страниц
- ru_nsignals: количество принятых сигналов
- ru_nvcsw: количество переключений контекста процессом
- ru_nivcsw: количество принудительных переключений контекста
- ru_nswap: количество обращений к диску при подкачке страниц
- ru_utime.tv_usec: время работы в пользовательском режиме (микросекунды)
- ru_utime.tv_sec: время работы в пользовательском режиме (секунды)
- ru_stime.tv_usec: время работы в привилегированном режиме (микросекунды)
- ru_stime.tv_sec: время работы в привилегированном режиме (секунды)
Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме). Вы можете получить результат как в секундах, так и в микросекундах. Для того чтобы превратить общее количество секунд в десятичное число, вам необходимо разделить значение микросекунд на 1 миллион и добавить к значению секунд.
Запутанно как-то. Вот пример:
// отдыхаем 3 секунды sleep(3); $data = getrusage(); echo "User time: ". ($data + $data / 1000000); echo "System time: ". ($data + $data / 1000000); /* выводит User time: 0.011552 System time: 0 */
Хотя выполнение скрипта заняло около 3-х секунд, процессор не был сильно нагружен. Дело в том, что при вызове (sleep) скрипт практически не потребляет ресурсов процессора. Вообще существует множество задач, которые занимают значительное время, но при этом не используют процессор. К примеру, ожидание операций связанных с диском. Так что вы не всегда используете процессорное время в своих скриптах.
Вот ещё пример:
// пройтись 10 миллионов раз for($i=0;$i<10000000;$i++) { } $data = getrusage(); echo "User time: ". ($data + $data / 1000000); echo "System time: ". ($data + $data / 1000000); /* выводит User time: 1.424592 System time: 0.004204 */
Работа скрипта заняла 1.4 секунды процессорного времени. В данном случае, время системных вызовов вообще низкое.
Время работы в привилегированном режиме (System Time) – это время, которое процессор затрачивает на выполнение системных запросов к ядру от имени программы. Пример:
$start = microtime(true); // вызываем microtime каждые 3 секунды while(microtime(true) - $start < 3) { } $data = getrusage(); echo "User time: ". ($data + $data / 1000000); echo "System time: ". ($data + $data / 1000000); /* выводит User time: 1.088171 System time: 1.675315 */
Теперь системного времени затратилось намного больше, чем в прошлом примере. Всё благодаря методу microtime(), который использует ресурсы системы.
Однако следует отметить, что выведенное время может быть не точным, т.к. в данный момент времени ресурсы процессора используются и другими программами, что в результате может дать небольшую погрешность.
Как стать PHP-программистом? Что нужно знать для начала работы?
В данный момент сайты редко пишут «с нуля». Чаще проекты разрабатывают на базе готовых систем управления (CMS) или фреймворков (наборов программ, из которых можно собрать сайт).
Если вы хотите стать PHP-программистом, вначале вам потребуется:
- Освоить язык разметки HTML и каскадные таблицы стилей CSS. Данные технологии применяются для создания внешнего вида страниц сайтов (макетов). В небольших студиях, куда берут новичков, PHP-программисты часто занимаются версткой макетов либо что-то в них правят. Поэтому вам потребуется знать HTML и CSS.
- Освоить язык JavaScript. Он позволяет создавать различные сценарии на страницах, формы, интерактивные элементы. Без знания JavaScript вы не сможете заниматься разработкой сайтов.
- Освоить язык PHP и стандарты написания кода PSR (PHP Standarts Recomendations).
- Освоить работу с базами данных MySQL.
-
Основательно разобраться в работе одной или нескольких популярных систем управления сайтами (CMS). Примеры таких систем: 1С Битрикс, WordPress, OpenCart и другие. Каждая система имеет свои особенности, которые необходимо знать.
Обучиться азам можно самостоятельно по курсам, выложенным на YouTube. Посмотрите список образовательных каналов по программированию, на которых имеются уроки по HTML, CSS, PHP, MySQL.
Где можно научиться программированию на языке PHP?
Если вы хотите получить знания системно и иметь наставников, которые помогут разобраться в предмете, рассмотрите вариант обучения на курсах. Есть специализированные сайты, где можно обучиться программированию онлайн.
Например, университет Нетология обучает программированию «с нуля». Занятия проводятся через интернет. Также есть сайт Skillbox, где можно пройти онлайн-курсы.
Примеры программ для желающих стать PHP-разработчиками:
Название курса |
Описание курса |
Вы научитесь писать код на PHP, изучите фреймворк Symfony, познакомитесь с разработкой сайтов на «1С Битрикс», освоите GIT. Отдельные лекции посвящены построению карьеры программиста. |
|
Подходит людям, которые хотят работать в сфере разработки сайтов. Здесь вы не только изучите PHP, но и научитесь верстать сайты, создавать скрипты на JavaScript и работать с фреймворками. |
|
Курс в Нетологии. Помимо PHP, здесь изучают различные технологии, которые используются при создании сайтов: HTML и CSS, JavaScript, библиотека React, фреймворк Laravel. |
Если раньше вы никак не сталкивались с веб-разработкой и хотите понять, интересна вам эта сфера или нет, можно пойти на бесплатный курс по основам HTML и CSS в Нетологии. Вам покажут примеры тегов и как их используют при разметке страниц. Вы сможете понять, насколько вам интереса сфера веб-разработки.
Как оставаться востребованным специалистом?
По мере набора опыта вы научитесь писать оптимальный код, оптимизировать его и распределять нагрузку. Вы станете более опытным и востребованным PHP-программистом.
Для дальнейшего развития нужно осваивать востребованные в веб-разработке навыки и технологии:
- Ajax.
- jQuery.
- Популярные фреймворки, на которых создают сайты.
-
Основы администрирования, чтобы уметь настраивать сервера, корректировать команды в файле .htaccess.
Вы можете возразить, что PHP-разработчик не должен заниматься версткой или администрированием серверов. С этим можно согласиться, однако на практике именно разработчика часто просят что-то поправить в верстке, внести настройки на сервер и т.д. В небольших веб-студиях PHP-программист часто является «мастером на все руки», ведь у компании нет возможности нанимать узких специалистов. Поэтому чем больше вы знаете в смежных сферах, тем быстрее сможете найти работу и зарабатывать больше денег.
Чтобы быть востребованным PHP-программистом, также необходимо:
- Уметь писать оптимальный код.
- Читать профильные ресурсы, чтобы быть в курсе новых технологий.
- Изучать теорию программирования.
- Выучить английский язык, чтобы иметь возможность читать документацию на иностранном языке, статьи и руководства на иностранных сайтах.
-
Уметь искать информацию в Интернете и находить решения проблем, с которыми вы впервые столкнулись.
Как видите, работа PHP-программиста не так проста, как казалось. Объем знаний, который требуется разработчику, велик. На освоение востребованных технологий может уйти длительное время.
Книги по PHP:
1.PHP. Объекты, шаблоны и методики программирования
За последние десять лет PHP буквально охватила объектно-ориентированная революция, причем это относится как к самим средствам языка, так и к разработчикам, использующим эти средства, и к приложениям, которые они создают. Теперь основной акцент делается на объектах и объектно-ориентированном подходе к проектированию.
2.Разработка веб-приложений с помощью PHP и MySQL
Авторы: Люк Веллинг, Лаура Томсон
Исчерпывающее учебное пособие по разработке веб-приложений, управляемых базами данных, с использованием PHP программирования и MySQL! Эта книга предназначена для тех, кто знаком с основами HTML и ранее разрабатывал программы на современных языках программирования, но, возможно, не занимался программированием для Веб или не использовал реляционные базы данных.
3.Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript и CSS
Научитесь создавать современные динамические веб-сайты, даже если у вас нет опыта в программировании. Если вы умеете писать статические сайты на HTML, то с помощью этого руководства вы освоите динамическое веб-программирование и изучите современные технологии с открытым кодом: PHP, MySQL, JavaScript и CSS.
4.PHP и MySQL. От новичка к профессионалу
Это практическое руководство станет незаменимым помощником для тех, кто желает создавать сайты на основе базы данных. В пятом издании этого бестселлера вы узнаете, как с помощью PHP программирования, используемого в 20 миллионах сайтов по всему миру, создать собственную систему управления содержимым (CMS) на основе исключительно бесплатного программного обеспечения.
Список книг, разумеется, не полный, но среди них обязательно найдете полезную для себя. Также на ютюбе много роликов, где рассказывают об основах PHP программирование. Они помогут освоить язык на практике.
PHP тесно связано с работой HTML — документов. В книгах, зачастую, все примеры показаны на взаимодействии этих двух языков. Поэтому рекомендую для начала получить базовые знания HTML.
Краткая справка
PHP(Personal Home Pages Tools) был создан программистом из Дании, Расмусом Ледорфом, как набор скриптов, написанных на Perl, для учета посетителей его личной странички (онлайн-резюме) в 1995 году. Вскоре после этого Расмусу понадобилось расширить возможности этого набора, поэтому он написал на С новый интерпретатор, который назвал PHP/FI. Язык унаследовал от Perl стиль обозначения переменных, но синтаксис был намного проще.Через два года автор языка выпустил вторую версию.
PHP/FI 2.0 не пользовался большой популярностью, пока в 1997 году программисты из израильского города Хайфа, Зеев Сураски и Энди Гутманс, не предложили Расмусу Ледорфу вместе работать над улучшением PHP. В итоге, весь код был полностью изменен и через некоторое время выпустили PHP 3.0 (от аббревиатуры FI решили отказаться). В результате этих изменений язык стал очень популярным и стал использоваться на огромном количестве веб-сайтов. Для большей солидности аббревиатуру поменяли на “PHP: Hypertext Preprocessor”, чтобы язык не ассоциировался только с домашними страничками.
Вскоре после выпуска третьей версии Сураски и Гутманс начали работу над PHP 4.0. Новый движок для языка назывался Zend Engine, а их фирма, которую они впоследствии основали, стала называться Zend Technologies. Пятая версия была представлена в 2004 году, в ней была улучшена производительность и изменены функции ООП (взяли за основу модель из Java).
PHP 6.0 так и не вышла (из-за проблем с Юникодом), после чего долгое время развивалась только пятая версия. Однако, в 2014 году начали разработку PHP 7.0, которая вышла в конце 2015.
Создание функций с переменным числом аргументов
Скорее всего, вы уже знаете, что PHP позволяет нам создавать функции с необязательными аргументами. Сейчас я покажу функцию, в которой число аргументов может меняться от случая к случаю.
Но для начала, вспомним как мы создаём функции обычным образом:
// функция с двумя необязательными параметрами function foo($arg1 = '', $arg2 = '') { echo "arg1: $arg1\n"; echo "arg2: $arg2\n"; } foo('hello','world'); /* выведет: arg1: hello arg2: world */ foo(); /* выведет: arg1: arg2: */
Теперь посмотрим на то, как можно написать функцию с неограниченным количеством аргументов. Для этого будет использовать метод func_get_args():
// не указываем аргументы function foo() { // возвращает массив, переданных аргументов $args = func_get_args(); foreach ($args as $k => $v) { echo "arg".($k+1).": $v\n"; } } foo(); /* ничего не выведет */ foo('hello'); /* выведет arg1: hello */ foo('hello', 'world', 'again'); /* выведет arg1: hello arg2: world arg3: again */
Каррирование и частичное применение
Функции частичного применения — это функции содержащие другие функции, которые работают с набором аргументов родителя.
В PHP мы можем создавать подобные функции при помощи замыканий. Ниже вы можете найти пример вычисления объёма коробки. Все аргументы являются необязательными. Однако, если передать меньше 3х параметров, то запустится ещё и другая внутренняя функция.
<?php $volume = function ($length = 0, $width = 0, $height = 0) use (&$volume) { $args = func_get_args(); $numArgs = func_num_args(); if ($numArgs == 3) { return $length * $width * $height; } else if ($numArgs < 3) { return function() use(&$volume, $args) { $newArgs = array_merge($args, func_get_args()); return call_user_func_array($volume, $newArgs); }; } else { throw new BadFunctionCallException("Too many arguments"); } };
В первой проверке мы проверяем количество аргументов. Если оно равно 3, то возвращаем результат. Если изначальное количество аргументов меньше, вызываем другую функцию, которая пытается найти решение с заданными данными.
Таким образом, мы можем вычислить размер коробки, передав сначала один аргумент, а потом и другие.
<?php $standardVolume = $volume(10); $vol = $standardVolume(5, 5); // 250
Каррирование — это специальный вид функции частичного применения, когда каждый аргумент может быть принят в отдельную функцию. Что-то типа f(x,y,z) to f(x)(y)(z). В PHP такой синтаксис невозможен, но реализовать принцип можно.
А сложно ли будет изучать PHP с нуля?
Всё будет зависеть от возраста и желания начинающего программиста. В первую очередь, стоит рассматривать востребованность языка. Эксперты подмечают, что не менее 85% сайтов на данный момент используют PHP как обычную практику написания сайтов. Однако никто не может гарантировать, что через лет тридцать понятие “веб-сайт” не потеряет своего смысла и технологии не зайдут настолько далеко, чтобы давать возможность полного погружения.
Если человек никогда ранее не имел дело с программированием и решил заняться вебом в 40-50 лет, потому что это крайне прибыльно, по словам интернет-маркетологов, то ему может быть сложно освоить даже базисы управления языком. Однако лишь практика и постоянная мотивация учиться и работать помогут ему побороть сложности. С такой же проблемой могут столкнуться и школьники, услышавшие о PHP от видеоблоггеров.
Грамотно подобранное учебное пособие (будь то чтение книги или работа с наставником), а также постоянная практика — вот, что поможет даже самому “ржавому чайнику” в компьютерах освоить PHP. Он же мало чем отличается от С++ или Pascal.