40
Коротко о PHP …или Откуда взялся слон

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

  • Upload
    dataart

  • View
    76

  • Download
    2

Embed Size (px)

Citation preview

Коротко о 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 создан новый движок, названный ZendEngine (от имён создателей, Зеева и Энди, также основателей Zend Technologies).

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

PHP 5 2004-…

Ряд изменений и дополнений:• Увеличена скорость работы, примерно на 10-20%• Введено пространство имён• Позднее статическое связывание и специальный метод __callStatic()• Лямбда-функции и замыкания• Добавление расширений: intl, phar, fileinfo и sqlite3• Опциональный сборщик мусора• Был написан драйвер MySQLnd для самой популярной у PHP разработчиков

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

• Отмена поддержки версий операционной системы до Windows 2000 (Windows98, 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 frameworkA 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