Коротко о 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
Немного об истории
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 хостинге
Производительность
Еще производительность
И ещё немного
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

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

  • 1.
    Коротко о PHP …илиОткуда взялся слон
  • 2.
    Немного об истории •PHP/FI • PHP 3 • PHP 4 • PHP 5 • …PHP 6… • PHP 7
  • 3.
    PHP/FI 1995-1997 Personal HomePage Набор скриптов, созданный датским программистом по имени Расмус Леордорф (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 PHP3.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.
  • 8.
  • 9.
  • 11.
  • 12.
    Типы данных PHP поддерживает8 базовых типов данных. • 4 скалярных типа: – Boolean – Integer – Float – String • 2 комплексных (составных) типа: – Array – Object • 2 специальных типа: – Resource – NULL
  • 13.
  • 14.
  • 15.
  • 16.
  • 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 • …
  • 19.
  • 20.
  • 21.
  • 22.
    Шаблоны программирования 1. Порождающие • AbstractFactory (Абстрактная фабрика). • 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 •Reverserouting •Restful controllers •Class auto loading •View composers •Migrations •Unit testing
  • 26.
    Phalcon framework A full-stackPHP framework delivered as a C-extension
  • 27.
    С расширение как фреймворк Плюсы: 1.Быстро 2.Дешево 3.Чисто Минусы 1.Однаверсия фреймворка на все приложения 2.Отсутствие поддержки на shared хостинге
  • 28.
  • 29.
  • 30.
  • 32.
    Zephir - ZendEngine 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. • Безопасная работа с памятью.
  • 37.
  • 38.
    Литература • Php.net • ProgrammingPHP by Tatroe, Kevit… • Design Patterns: Elements of Reusable Object-Oriented Software by Gang of Four
  • 39.
  • 40.
    The magical, mystical andelegant PHP mascot ele.. PHP.. wait for it!: The elePHPant! By Vincent Pontier, 1998