SlideShare a Scribd company logo
Коротко о PHP
…или Откуда взялся слон
Немного об истории
• PHP/FI
• PHP 3
• PHP 4
• PHP 5
• …PHP 6…
• PHP 7
PHP/FI 1995-1997
Personal Home Page
Набор скриптов, созданный датским
программистом по имени Расмус
Леордорф (Rasmus Lerdorf)
Personal Home Page / Forms Interpreter
PHP/FI включал базовую
функциональность современного PHP.
Исполозовали около 1% (примерно 50
тысяч) всех интернет-доменов.
PHP 3 1997-1998
Энди Гутманс (Andi Gutmans) и Зеев
Сураски (Zeev Suraski)
Сильнейших стороной PHP 3.0 была
возможность расширения ядра
дополнительными модулями.
PHP 3.0 уже был установлен
приблизительно на 10 % веб-серверов
Интернета
PHP 4 1998-2008
PHP 3.0 не имел качественной поддержки
модулей и приложения работали неэффективно.
В 1999 создан новый движок, названный Zend
Engine (от имён создателей, Зеева и Энди, также
основателей Zend Technologies).
Ключевые нововведения, такие как поддержка
сессий, буферизация вывода, более безопасные
способы обработки вводимой пользователем
информации.
PHP 5 2004-…
Ряд изменений и дополнений:
• Увеличена скорость работы, примерно на 10-20%
• Введено пространство имён
• Позднее статическое связывание и специальный метод __callStatic()
• Лямбда-функции и замыкания
• Добавление расширений: intl, phar, fileinfo и sqlite3
• Опциональный сборщик мусора
• Был написан драйвер MySQLnd для самой популярной у PHP разработчиков
базы данных MySQL. С появлением нативного драйвера скорость работы с
Mysql значительно увеличилась, также новый драйвер доступен уже в
стандартной сборке(ранее это было невозможно из-за лицензии, связанной с
libmysql)
• Отмена поддержки версий операционной системы до Windows 2000 (Windows
98, NT4, и.т.д.)
• Новые синтаксические конструкции, такие как NOWDOC, ограниченный GOTO,
короткий вид тернарного оператора «?:»
• и другое.
PHP 6 2006-…
В марте 2010 года разработка PHP6 была
признана бесперспективной из-за сложностей
с поддержкой Юникода. Исходный код PHP6
перемещён на ветвь, а основной линией
разработки стала версия 5.4.
PHP 7 beta 1
Немного об истории
Роман Еникеев - PHP или откуда взялся слон
Hello world
Типы данных
PHP поддерживает 8 базовых типов данных.
• 4 скалярных типа:
– Boolean
– Integer
– Float
– String
• 2 комплексных (составных) типа:
– Array
– Object
• 2 специальных типа:
– Resource
– NULL
Перевернуть массив?
Перевернуть массив
Загадка 
Классы
Немного магии
• __construct
• __destruct
• __call
• __callStatic
• __get
• __set
• __isset
• __unset
• __sleep
• __wakeup
• __toString
• __set_state
• __clone
Frameworks
• Zend Framework / Zend Framework 2
• Sympfony
• Yii
• CodeIgniter
• …
Популярность
Zend Frameworks
Zend Frameworks
Zend_Controller dependencies
Шаблоны
программирования
1. Порождающие
• Abstract Factory (Абстрактная фабрика).
• Factory Method (Фабричный метод).
• Singleton (Одиночка).
• Prototype (Прототип).
• Builder (Строитель).
Шаблоны
программирования
2. Структурные
• Adapter (Адаптер)
• Bridge (Мост)
• Composite (Компоновщик)
• Decorator (Декоратор)
• Facade (Фасад)
• Flyweight (Приспособленец)
• Proxy (Прокси)
Шаблоны
программирования
3. Паттерны поведения
• Chain of Responsibility (Цепочка обязанностей)
• Command (Команда)
• Interpreter (Интерпретатор)
• Iterator (Итератор)
• Mediator (Медиатор)
• Memento (Хранитель)
• Observer (Наблюдатель)
• State (Состояние)
• Etc…
Laravel
•Bundles
•Eloquent ORM
•Application logic
•Reverse routing
•Restful controllers
•Class auto loading
•View composers
•Migrations
•Unit testing
Phalcon framework
A full-stack PHP framework delivered as a C-extension
С расширение
как фреймворк
Плюсы:
1.Быстро
2.Дешево
3.Чисто
Минусы
1.Одна версия фреймворка на все
приложения
2.Отсутствие поддержки на
shared хостинге
Производительность
Еще производительность
И ещё немного
Роман Еникеев - PHP или откуда взялся слон
Zephir - Zend Engine Php
Intermediate
Zephir - высокоуровневый язык программирования
для быстрого и простого создания PHP extensions.
Мотивация
• С — сложно.
• Zend Engine — сложно + страшно + долго.
• С+Zend Engine — (сложно+страшно)^2.
Решение
Zephir — DSL (Domain Specific Language).
*.zep
С-parser (json)
Static analysis + Block Optimisation
Code generation + Optimisation
С + Zephir Kernel
Make files
Что под капотом?
Чем отличается от PHP
• Декларативный стиль.
• Статическая/динамическая типизация.
• Пространства имен - обязательно!
• Запрещен глобальный код.
• Компиляция Ahead-of-time.
• Безопасная работа с памятью.
Memcached
Литература
• Php.net
• Programming PHP by Tatroe, Kevit…
• Design Patterns: Elements of Reusable
Object-Oriented Software by Gang of Four
Q&A?
The magical, mystical
and elegant PHP mascot
ele.. PHP.. wait for it!: The elePHPant!
By Vincent Pontier, 1998

More Related Content

PDF
Индексируй неиндексирумое
PDF
SPA инструменты
PDF
Бекдоры в пхп. Остаться незамеченным или проникновение без боли
PDF
Опыт разработки эффективного SPA
PDF
UWDC 2013, Как мы используем Yii
PDF
DevConf 2012 - Yii, его разработка и Yii2
PDF
UWDC 2013, Yii2
PPTX
"Swift. Функциональное программирование", Игорь Литвиненко, DataArt
Индексируй неиндексирумое
SPA инструменты
Бекдоры в пхп. Остаться незамеченным или проникновение без боли
Опыт разработки эффективного SPA
UWDC 2013, Как мы используем Yii
DevConf 2012 - Yii, его разработка и Yii2
UWDC 2013, Yii2
"Swift. Функциональное программирование", Игорь Литвиненко, DataArt

Similar to Роман Еникеев - PHP или откуда взялся слон (20)

PPTX
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
PPTX
Язык программирования PHP
PPTX
Php and frameworks
PPT
The basic design of the PHP language
PPTX
Язык программирования PHP. EasyCode. Стартовая презентация.
PDF
Релиз PHP7 - что нас ждет в октябре 2015
PPTX
Base php 1
PPTX
Base php 1
PPTX
Base php 1
DOC
уроки по Php
PDF
Памятка о php-шниках
PPT
PDF
Сладкое будущее: Phalcon и Zephir
PPT
Web programming modern tendencies
PPTX
Иван Стеценко: ЯП Zephir. Панацея или лечение?
PPT
Yii rit 2010
PPTX
Микрофреймворки PHP
ODP
александр макаров Yii Rit 2010
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
Язык программирования PHP
Php and frameworks
The basic design of the PHP language
Язык программирования PHP. EasyCode. Стартовая презентация.
Релиз PHP7 - что нас ждет в октябре 2015
Base php 1
Base php 1
Base php 1
уроки по Php
Памятка о php-шниках
Сладкое будущее: Phalcon и Zephir
Web programming modern tendencies
Иван Стеценко: ЯП Zephir. Панацея или лечение?
Yii rit 2010
Микрофреймворки PHP
александр макаров Yii Rit 2010
Ad

More from DataArt (20)

PDF
DataArt Custom Software Engineering with a Human Approach
PDF
DataArt Healthcare & Life Sciences
PDF
DataArt Financial Services and Capital Markets
PDF
About DataArt HR Partners
PDF
Event management в IT
PDF
Digital Marketing from inside
PPTX
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
PDF
DevOps Workshop:Что бывает, когда DevOps приходит на проект
PDF
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
PDF
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
PDF
Communication in QA's life
PDF
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
PDF
Знакомьтесь, DevOps
PDF
DevOps in real life
PDF
Codeless: автоматизация тестирования
PDF
Selenoid
PDF
Selenide
PDF
A. Sirota "Building an Automation Solution based on Appium"
PDF
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
PPTX
IT talk: Как я перестал бояться и полюбил TestNG
DataArt Custom Software Engineering with a Human Approach
DataArt Healthcare & Life Sciences
DataArt Financial Services and Capital Markets
About DataArt HR Partners
Event management в IT
Digital Marketing from inside
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
DevOps Workshop:Что бывает, когда DevOps приходит на проект
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
Communication in QA's life
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Знакомьтесь, DevOps
DevOps in real life
Codeless: автоматизация тестирования
Selenoid
Selenide
A. Sirota "Building an Automation Solution based on Appium"
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
IT talk: Как я перестал бояться и полюбил TestNG
Ad

Роман Еникеев - PHP или откуда взялся слон

  • 1. Коротко о PHP …или Откуда взялся слон
  • 2. Немного об истории • PHP/FI • PHP 3 • PHP 4 • PHP 5 • …PHP 6… • PHP 7
  • 3. PHP/FI 1995-1997 Personal Home Page Набор скриптов, созданный датским программистом по имени Расмус Леордорф (Rasmus Lerdorf) Personal Home Page / Forms Interpreter PHP/FI включал базовую функциональность современного PHP. Исполозовали около 1% (примерно 50 тысяч) всех интернет-доменов.
  • 4. PHP 3 1997-1998 Энди Гутманс (Andi Gutmans) и Зеев Сураски (Zeev Suraski) Сильнейших стороной PHP 3.0 была возможность расширения ядра дополнительными модулями. PHP 3.0 уже был установлен приблизительно на 10 % веб-серверов Интернета
  • 5. PHP 4 1998-2008 PHP 3.0 не имел качественной поддержки модулей и приложения работали неэффективно. В 1999 создан новый движок, названный Zend Engine (от имён создателей, Зеева и Энди, также основателей Zend Technologies). Ключевые нововведения, такие как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации.
  • 6. PHP 5 2004-… Ряд изменений и дополнений: • Увеличена скорость работы, примерно на 10-20% • Введено пространство имён • Позднее статическое связывание и специальный метод __callStatic() • Лямбда-функции и замыкания • Добавление расширений: intl, phar, fileinfo и sqlite3 • Опциональный сборщик мусора • Был написан драйвер MySQLnd для самой популярной у PHP разработчиков базы данных MySQL. С появлением нативного драйвера скорость работы с Mysql значительно увеличилась, также новый драйвер доступен уже в стандартной сборке(ранее это было невозможно из-за лицензии, связанной с libmysql) • Отмена поддержки версий операционной системы до Windows 2000 (Windows 98, NT4, и.т.д.) • Новые синтаксические конструкции, такие как NOWDOC, ограниченный GOTO, короткий вид тернарного оператора «?:» • и другое.
  • 7. PHP 6 2006-… В марте 2010 года разработка PHP6 была признана бесперспективной из-за сложностей с поддержкой Юникода. Исходный код PHP6 перемещён на ветвь, а основной линией разработки стала версия 5.4.
  • 12. Типы данных PHP поддерживает 8 базовых типов данных. • 4 скалярных типа: – Boolean – Integer – Float – String • 2 комплексных (составных) типа: – Array – Object • 2 специальных типа: – Resource – NULL
  • 17. Немного магии • __construct • __destruct • __call • __callStatic • __get • __set • __isset • __unset • __sleep • __wakeup • __toString • __set_state • __clone
  • 18. Frameworks • Zend Framework / Zend Framework 2 • Sympfony • Yii • CodeIgniter • …
  • 22. Шаблоны программирования 1. Порождающие • Abstract Factory (Абстрактная фабрика). • Factory Method (Фабричный метод). • Singleton (Одиночка). • Prototype (Прототип). • Builder (Строитель).
  • 23. Шаблоны программирования 2. Структурные • Adapter (Адаптер) • Bridge (Мост) • Composite (Компоновщик) • Decorator (Декоратор) • Facade (Фасад) • Flyweight (Приспособленец) • Proxy (Прокси)
  • 24. Шаблоны программирования 3. Паттерны поведения • Chain of Responsibility (Цепочка обязанностей) • Command (Команда) • Interpreter (Интерпретатор) • Iterator (Итератор) • Mediator (Медиатор) • Memento (Хранитель) • Observer (Наблюдатель) • State (Состояние) • Etc…
  • 25. Laravel •Bundles •Eloquent ORM •Application logic •Reverse routing •Restful controllers •Class auto loading •View composers •Migrations •Unit testing
  • 26. Phalcon framework A full-stack PHP framework delivered as a C-extension
  • 27. С расширение как фреймворк Плюсы: 1.Быстро 2.Дешево 3.Чисто Минусы 1.Одна версия фреймворка на все приложения 2.Отсутствие поддержки на shared хостинге
  • 32. Zephir - Zend Engine Php Intermediate Zephir - высокоуровневый язык программирования для быстрого и простого создания PHP extensions.
  • 33. Мотивация • С — сложно. • Zend Engine — сложно + страшно + долго. • С+Zend Engine — (сложно+страшно)^2.
  • 34. Решение Zephir — DSL (Domain Specific Language).
  • 35. *.zep С-parser (json) Static analysis + Block Optimisation Code generation + Optimisation С + Zephir Kernel Make files Что под капотом?
  • 36. Чем отличается от PHP • Декларативный стиль. • Статическая/динамическая типизация. • Пространства имен - обязательно! • Запрещен глобальный код. • Компиляция Ahead-of-time. • Безопасная работа с памятью.
  • 38. Литература • Php.net • Programming PHP by Tatroe, Kevit… • Design Patterns: Elements of Reusable Object-Oriented Software by Gang of Four
  • 39. Q&A?
  • 40. The magical, mystical and elegant PHP mascot ele.. PHP.. wait for it!: The elePHPant! By Vincent Pontier, 1998