Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
Я расскажу о том, как мы разрабатываем фронтенд и бэкенд параллельно, используя protobuf + JSON RPC.
Часто фронтенд выставляет требования к бэкенду, из этих требований получается API, и разработка возможна только при одновременной работе серверного и клиентского девелопера.
Мы же начинаем разработку с API, и фронтенд (а также мобильные приложения) никак не зависят от степени готовности бэкенда.
– Я поделюсь тем, как мы делаем API до начала разработки;
– Success story использования protobuf + RPC;
– И немного – о разработке клиента вообще без серверного кода.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
Demonizing PHP application to gain higher performance. Splitting an application into infrastructure (go) and business logic (PHP) layers to gain higher flexibility.
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
Роман Дворнов (Avito)
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
После докладов мы проведём дискуссионную панель на тему "Организация системы компонент", в которой примут участие докладчики, а также приглашенные эксперты.
Дизайн платформа в Avito - Александр Лобашев (Avito)AvitoTech
Компонентный подход принес много пользы, а вместе с тем и проблему переиспользования компонентов. В проекте появились сотни, тысячи компонентов, но со временем мы совсем забыли где они живут, как их использовать и как они выглядят. А что если дизайнер нарисовал интерфейс с новой кнопкой? Использовать текущий компонент или сделать новую кнопку для маленького интерфейса?
Я расскажу, как мы сделали пряничный домик для дизайнеров, а также наладили коммуникацию и коллаборацию между дизайнерами, разработчиками и менеджерами.
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
Розгляд та аналіз інфструментів PHPStorm для drupal розробника: QA tools, Xdebug, Issue Tracking System, Drush, інструменти для роботи з Vagrant, Docker і базами даних. Корисні плагіни.
Web-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
Погружение в GameDev
Слава Троицкий
Директор в "Фабрика игр"
Открытые и бесплатные средства для кросплатформенной разработки приложений и игр. Обзор Haxe и OpenFL.
http://devowl.org/
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
Я расскажу о том, как мы разрабатываем фронтенд и бэкенд параллельно, используя protobuf + JSON RPC.
Часто фронтенд выставляет требования к бэкенду, из этих требований получается API, и разработка возможна только при одновременной работе серверного и клиентского девелопера.
Мы же начинаем разработку с API, и фронтенд (а также мобильные приложения) никак не зависят от степени готовности бэкенда.
– Я поделюсь тем, как мы делаем API до начала разработки;
– Success story использования protobuf + RPC;
– И немного – о разработке клиента вообще без серверного кода.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
Demonizing PHP application to gain higher performance. Splitting an application into infrastructure (go) and business logic (PHP) layers to gain higher flexibility.
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
Роман Дворнов (Avito)
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
После докладов мы проведём дискуссионную панель на тему "Организация системы компонент", в которой примут участие докладчики, а также приглашенные эксперты.
Дизайн платформа в Avito - Александр Лобашев (Avito)AvitoTech
Компонентный подход принес много пользы, а вместе с тем и проблему переиспользования компонентов. В проекте появились сотни, тысячи компонентов, но со временем мы совсем забыли где они живут, как их использовать и как они выглядят. А что если дизайнер нарисовал интерфейс с новой кнопкой? Использовать текущий компонент или сделать новую кнопку для маленького интерфейса?
Я расскажу, как мы сделали пряничный домик для дизайнеров, а также наладили коммуникацию и коллаборацию между дизайнерами, разработчиками и менеджерами.
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
Розгляд та аналіз інфструментів PHPStorm для drupal розробника: QA tools, Xdebug, Issue Tracking System, Drush, інструменти для роботи з Vagrant, Docker і базами даних. Корисні плагіни.
Web-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
Погружение в GameDev
Слава Троицкий
Директор в "Фабрика игр"
Открытые и бесплатные средства для кросплатформенной разработки приложений и игр. Обзор Haxe и OpenFL.
http://devowl.org/
Доклад с PUG#2 https://www.facebook.com/events/292457000957088/
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH.
PHP User Group Ukraine в социальных сетях:
https://www.facebook.com/pug.ukraine
https://vk.com/pug.ukraine
https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Видео и материалы со встречи:
http://getdev.net/Event/dynamic-language-runtime
В докладе рассмотрим скриптовые языки на платформе DLR, способы автоматизации рутинной работы с их помощью, а также интегрирование в конечное приложение.
Презентация к докладу на SymfonyCampUA-2012.
В докладе рассмотрены основные вопросы работы с АОП в PHP, даны определения аспектов, срезов, советов, а также рассмотрено реальное использование библиотеки GO! для внедрения аспектно-ориентированной парадигмы в любое приложение.
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
Краткий экскурс в историю развития PHP как языка программирования с момента зарождения и до наших дней, попытка проследить расширение сферы применения языка и выявить причины, этому способствовавшие, обзор возможностей современного PHP как языка программирования и как стэка технологий для создания мощных программных решений корпоративного уровня.
Доклад будет интересен как начинающим программистам, так и разработчикам с опытом, ещё не освоившим PHP.
Автор доклада: Павел Крынецкий — PHP/Java разработчик, компания Аркадия. Участвовал в разработке веб-проектов корпоративного сектора различной сложности для как для российских, так и зарубежных заказчиков. Профессиональный опыт в IT-индустрии > 7 лет.
Содержание:
1. Вспомним материал прошлого урока.
2. Ада Лавлейс (1815-1852) – первый программист.
3. Языки программирования.
4. Классификация языков программирования.
5. Транслятор.
6. Примеры языков программирования.
7. Объектно-ориентированное программирование.
8. 10 языков программирование, которые стоит изучать.
9. Среда программирования.
10. Cреда разработки Turbo Delphi - основные команды.
11. Запустите Turbo Delphiсоздайте Console Application.
12. Введите текст программы между begin и end; нажмите Run.
13. Как написать программу “Hello, world!”
14. Домашнее задание.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.IT-Доминанта
Основные понятия связанные с разработкой ПО: просто о сложном.
Лаабе Дмитрий
Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.
Similar to The basic design of the PHP language (20)
интелектуальный анализ экономических данных в системе каркасVladimir Burdaev
Модель базы знаний для интеллектуальной кластеризации многомерных данных в системе КАРКАС
Model knowledge base for intelligent clustering of multidimensional data in the system KARKAS
Модель базы знаний выбора источника финансирования инновационной деятельности Система Каркас
Model Knowledge Base selecting the source of funding innovation system KARKAS
Модель базы знаний для определения риска ишемической болезни сердца Система КАРКАС
Model Knowledge Base to determine the risk of coronary heart disease System KARKAS
2. Краткая история
История РНР начинается с 1995
года, когда независимый
программист-контрактник по имени
Расмус Лердорф(Rasmus Lerdorf)
написал сценарий Perl/CGI для
подсчета количества посетителей
сайта, прочитавших его онлайновое
резюме. Лердорф начал бесплатно
раздавать свой инструментарий,
названный Personal Home Page(РНР)
или Hypertext
Processor(гипертекстовый
процессор).
3. К моменту выхода
версии 3.0 в 1997 году
свыше 50 000
пользователей
применяли РНР для
улучшения своих webстраниц. В 1997 году было
решено, что сокращение
РНР должно означать не
«Personal Home page», а
«РНР Hypertext
Processor»
4. • В начале 1999 года было объявлено о предстоящем выходе РНР
4.0. Хотя одной из сильнейших сторон РНР была эффективность
выполнения сценариев, при первоначальных разработках не
предполагалось, что на базе РНР будут строиться
крупномасштабные приложения. Работа шла быстро и
завершилась 22 мая 2000 года выпуском РНР версии 4.0.
5. • РНР лучше всего
охарактеризовать как
работающий на стороне
сервера встроенный
язык сценариев Web,
позволяющий
разработчикам быстро
и эффективно строить
динамические webприложения.
7. Бесплатное распространение
• Принятие стратегии Open Source и бесплатное
распространение исходных текстов РНР
оказало неоценимую услугу пользователям.
Вдобавок, отзывчивое сообщество
пользователей РНР является своего рода
«коллективной службой поддержки», и в
популярных электронных конференциях можно
найти ответы даже на самые сложные
вопросы.
8. Область применения
В области программирования для Сети PHP — один из
популярных скриптовых языков. Популярность в области
построения веб-сайтов определяется наличием большого набора
встроенных средств для разработки веб-приложений. Основные
из них:
• автоматическое извлечение POST и GET-параметров;
• взаимодействие с большим количеством различных систем
управления базами данных;;
• работа с HTTP-авторизацией, с cookies и сессиями, работа с
локальными и удалёнными файлами, сокетами, с XForms.
Согласно рейтингу корпорации TIOBE, базирующемся на данных
поисковых систем, в апреле 2011 года PHP находился на 5 месте
среди языков программирования.
Входит в LAMP — распространённый набор программного
обеспечения для создания веб-сайтов.
9. Синтаксис PHP
Синтаксис PHP очень напоминает синтаксис
языка C и во многом заимствован из таких
языков как Java и Perl. Программист С очень
быстро освоит язык PHP и сможет
использовать его с максимальной
эффективностью. В принципе, в PHP есть
практически все операторы и функции,
имеющиеся в стандартном GNU С, например
есть циклы, операторы выбора, функции
работы с файловой системой и процессами,
функции ввода-вывода и множество других...
10. echo "Это тест";
?>
<?php echo
"Это тест" ?>
Разделение инструкций
<?php
echo "Это
тест"; ?>
<?php echo
"Это тест" ?>
• Инструкции разделяются
также как и в C или Perl каждое выражение
заканчивается точкой с
запятой. Закрывающий
тег (?>) также
подразумевает конец
инструкции, поэтому два
следующих фрагмента
кода эквиваленты:
11. Комментарии в PHP скриптах
<?php
echo "Это тест"; // Это однострочный
комментарий в стиле c++
/* Это многострочный комментарий
еще одна строка комментария */
echo "Это еще один тест";
echo "Последний тест"; # Это
комментарий в стиле оболочки Unix
?>
12. Переменные в PHP
• Имена переменных обозначаются
знаком $. То же самое "Привет, я скрипт PHP! " можно получить
следующим образом:
<?php
$message = "Привет,
я - скрипт PHP!";
echo $message;
?>
13. Типы данных в PHP
Четыре скалярных типа:
• boolean
• integer
• float
Два специальных типа:
• string
• resource
Два смешанных типа:
• NULL
• array
Псевдотипов:
• object
• mixed
• number
• callback
14. Выражения в PHP
Основными формами выражений
являются константы и переменные.
Например, если вы записываете "$a =
100", вы присваиваете '100' переменной
$a:
В приведенном примере $a - это
переменная, = - это оператор
присваивания, а 100 - это и есть
выражения. Его значение 100.
16. Управляющие конструкции
PHP
Любой сценарий PHP сформирован из
ряда конструкций. Конструкцией могут
быть операторы, функции, циклы,
условные операторы… Конструкции
обычно заканчиваются ;. Кроме того,
конструкции могут быть сгруппированы в
группу, формируя группу конструкций с
изогнутыми фигурными скобками {...}.
19. • Цикл с предусловием while
–
while (логическое_выражение)
–
инструкция;
• Цикл с постусловием do while
–
Do
–
{
–
тело_цикла;
–
}
–
Циклы
while (логическое_выражение);
• Цикл со счетчиком for
–
for (инициализирующие_команды; условие_цикла;
команды_после_итерации)
–
{ тело_цикла; }
• Цикл перебора массивов foreach
–
foreach (массив as $ключ=>$значение)
–
команды;
20. Конструкции
выбора
Часто вместо нескольких расположенных подряд инструкций if-else
целесообразно воспользоваться специальной конструкцией
выбора switch-case. Данная конструкция предназначена для
выбора действий, в зависимости от значения указанного
выражения.
Синтаксис конструкции switch-case такой:
switch(выражение) {
case значение1: команды1; [break;]
case значение2: команды2; [break;]
...
case значениеN: командыN; [break;]
[default: команды_по_умолчанию; [break]]
}
21. Конструкция declare
Конструкция объявления declare
используется, чтобы установить директивы
выполнения для блока кода. Синтаксис
declare подобен синтаксису других
управляющих конструкций языка PHP:
declare (директива)
●
инструкция;
●
Директива позволяет установить поведение
блока declare. В настоящее время в PHP
доступна только одна директива - tick.
Инструкция является частью блока declare.
Как будет выполнена инструкция
(инструкции), зависит от директивы.
22. Конструкция return
Конструкция rerurn возвращает значения,
преимущественно из пользовательских функций, как
параметры функционального запроса. При вызове
return исполнение пользовательской функции
прерывается, а конструкция return возвращает
определенные значения. Возврат приводит к
завершению выполнения функции и передаче
управления обратно к той строке кода, в которой
данная функция была вызвана.
23. • Конструкция включений require
Конструкция require позволяет
включать файлы в сценарий PHP до
исполнения сценария PHP. Общий
синтаксис require такой:
–
require имя_файла;
• Конструкция включений include
В отличие от конструкции require
конструкция include позволяет
включать файлы в код PHP скрипта
во время выполнения сценария.
Синтаксис конструкции include
выглядит следующим образом:
–
include имя_файла;
Констру
кции
включе
ний