Upload
dataart
View
76
Download
2
Embed Size (px)
Citation preview
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 поддерживает 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
Шаблоны программирования
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
С расширениекак фреймворк
Плюсы:1.Быстро
2.Дешево
3.Чисто
Минусы1.Одна версия фреймворка на все
приложения
2.Отсутствие поддержки на
shared хостинге
Zephir - Zend Engine Php
Intermediate
Zephir - высокоуровневый язык программирования
для быстрого и простого создания PHP extensions.
Мотивация
• С — сложно.
• Zend Engine — сложно + страшно + долго.
• С+Zend Engine — (сложно+страшно)^2.
*.zep
С-parser (json)
Static analysis + Block Optimisation
Code generation + Optimisation
С + Zephir Kernel
Make files
Что под капотом?
Чем отличается от PHP
• Декларативный стиль.
• Статическая/динамическая типизация.
• Пространства имен - обязательно!
• Запрещен глобальный код.
• Компиляция Ahead-of-time.
• Безопасная работа с памятью.
Литература
• Php.net
• Programming PHP by Tatroe, Kevit…
• Design Patterns: Elements of Reusable Object-Oriented Software by Gang of Four