[править]
Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
У этого термина существуют и другие значения, см. PHP (значения).
PHP
Семантика: мультипарадигменный
Интерпретатор компилирующего
Тип исполнения:
типа[1][2]
Появился в: 1994 г.
Типизация
динамическая
данных:
Содержание
[убрать]
• 1 Область применения
• 2 История
• 3 Синтаксис
○ 3.1 Типы данных
○ 3.2 Обращение к переменным и функциям
○ 3.3 Суперглобальные массивы
○ 3.4 Объектно-ориентированное программирование
• 4 Особенности интерпретатора
○ 4.1 Расширения
○ 4.2 Параметры настройки
○ 4.3 Режимы интерпретатора
○ 4.4 Пасхальные яйца
○ 4.5 Альтернативные реализации
• 5 Лицензирование
• 6 Приложения PHP
○ 6.1 Библиотека PEAR
○ 6.2 Популярные веб-приложения
○ 6.3 Фреймворки
• 7 Интегрированные среды разработки для PHP
• 8 Критика
○ 8.1 Несогласованный синтаксис функций и неортогональность
○ 8.2 Отсутствие обратной совместимости между версиями языка
○ 8.3 Отсутствие поддержки многобайтовых кодировок в ядре языка
○ 8.4 Отсутствие многопоточности
• 9 Рынок труда
• 10 Примечания
• 11 См. также
• 12 Ссылки
• 13 Литература
$b = 'a';
echo $$b; // Вывод переменной $а (дополнительный $ перед
переменной $b)
$d = 'Class_name';
$ob = new Class_name; // Создание объекта класса Class_name
$obj = new $d(); // Создание объекта класса Class_name
$a = new a();
echo $a -> color; // red
$b = $a;
$b -> color = 'blue';
echo $a -> color; // blue
«Paamayim Nekudotayim» или просто «двойное двоеточие». Используя эту лексему,
программист может обращаться к константам, статическим или перегруженным
свойствам или методам класса. При обращении к этим элементам извне класса,
программист должен использовать имя этого класса. «Paamayim Nekudotayim» на первый
взгляд может показаться странным словосочетанием для обозначения двойного
двоеточия. Однако, во время создания Zend Engine версии 0.5 (который входил в PHP3),
Andi и Zeev выбрали[16] именно это обозначение. «Paamayim Nekudotayim» действительно
значит «двойное двоеточие». На иврите.[Стиль?] Просто, это обозначение не менялось ни
разу в течение всего времени разработки PHP.[17]
<?php
class MyClass {
const CONST_VALUE = 'Значение константы';
}
// Использование :: вне объявления класса
echo MyClass::CONST_VALUE;
?>
[править] Критика
[править] Несогласованный синтаксис функций и неортогональность
PHP предоставляет разработчикам большое количество самых разнообразных функций,
которые попали в язык из расширений, создаваемых разными группами программистов. В
результате синтаксис языка не согласован, например, часть функций для работы с
массивами начинается с префикса array_, другая часть этим префиксом не обладает.
Названия части строковых функций начинается с префикса str, другие функции таким
префиксом не обладают. В тех же строковых функциях обрабатываемая строка может
передаваться как в качестве первого, так и в качестве последнего аргумента, что вызывает
путаницу у программистов, и, следовательно, требует постоянного обращения к
документации. Некоторые задачи, например, разбиение строки на массив или подстроки,
решаются несколькими функциями.
[править] Отсутствие обратной совместимости между версиями языка
Код, созданный для более ранних версий языка, зачастую не работает или работает
некорректно с более поздними версиями языка[32]. В более поздних версиях исключаются
конструкции, методики, функции, применявшиеся ранее. В результате, приложения,
созданные несколько лет назад, практически теряют работоспособность для современных
версий языка и требуют значительной модификации. Такие изменения обусловлены двумя
факторами: устранением несогласованного синтаксиса и устранением конструкций,
поощряющих создание небезопасного кода. Справедливости ради следует отметить, что
отсутствие обратной совместимости вообще характерно для современных
интерпретируемых языков.[источник не указан 33 дня]
Наблюдаются значительная несовместимость новой версии 5.3.2 со старой версией 5.2.13
и ведующие разработчики[кто?] рекомендуют воздерживаться от апгрейда версии PHP на
серверах в течение достаточного срока времени. Также в версии 5.3 отсутствует
программное обеспечение Zend Optimizer.[источник не указан 28 дней]
[править] Отсутствие поддержки многобайтовых кодировок в ядре языка
Поддержка строк с многобайтовыми кодировками, такими как UTF-8 реализуется через
расширение mbstring. При этом вместо стандартных функций работы со строками
используются аналогичные функции, но с префиксом mb_. Сами строки не хранят
информацию о своей кодировке, и её необходимо указывать вручную при вызове функций
расширения mbstring.
Разработчики сообщают что проблема будет решена в PHP 6[13].
[править] Отсутствие многопоточности
В языке не предусмотрена возможность создания многопоточных приложений. Есть
различные обходные решения с использованием curl[33] и сокетов.[34][35][36] Для POSIX-
совместимых систем можно использовать функции с префиксом pcntl_. Справедливости
ради, следует отметить, что PHP распространён главным образом в области Web-
разработки, где зачастую проблему многопоточности берет на себя веб-сервер.
[править] Рынок труда
Согласно исследованиям одного из крупных российских порталов трудоустройства[37]:
• возрастной диапазон наиболее востребованных программистов PHP 20-45 лет;
программисты PHP в возрасте до 30 лет составляют 78 % от общего числа
специалистов;
• 95 % программистов PHP — мужчины;
• 80 % программистов PHP владеют английским языком на базовом уровне и на
уровне чтения технической документации; на разговорном и на свободном
уровнях — 17 %;
• 60 % программистов PHP имеют высшее образование, 26 % — неполное высшее,
8 % — средне-специальное;
[править] Примечания
↑ Показывать компактно
1. ↑ 1 2 PHP Compiler Internals (англ.). Проверено 17 ноября 2009.
2. ↑ PHP: Zend API: Hacking the Core of PHP — Manual
3. ↑ PHP: Downloads (англ.). Проверено 4 марта 2010.
4. ↑ PHP Sources Snapshots
5. ↑ 1 2 3 PHP: History of PHP — Manual
6. ↑ PHP: Preface — Manual (англ.).
7. ↑ 1 2 TIOBE Software: Tiobe Index
8. ↑ History of PHP and related projects (англ.).
9. ↑ PHP: Отличительные особенности — Manual (рус.) (21 июня 2009). Проверено 13
ноября 2009.
10. ↑ Количество переписанных функций с поддержкой Юникода
11. ↑ Файл news.txt из дистрибутива PHP 6
12. ↑ Текущий список выполненных и невыполненных работ по PHP 6
13. ↑ 1 2 Полный список изменений, которые были запланированы в декабре 2005 года
14. ↑ http://php.net/variables.variable
15. ↑ http://ru.php.net/manual/en/function.echo.php
16. ↑ Повидимому, позаимствовали из языка C++, где это бинарная форма указания
области видимости, конструкция с ним, квалифицированным именем, в данном
случае константы.
17. ↑ http://php.net/manual/en
18. ↑ PHP: Basic memory management — Manual (рус.) (13 ноября 2009). Проверено 17
ноября 2009.
19. ↑ PHP: php.ini directives — Manual (англ.) (6 ноября 2009). Проверено 13 ноября 2009.
20. ↑ PHP: List of php.ini directives — Manual (англ.) (6 ноября 2009). Проверено 13 ноября
2009.
21. ↑ PHP: Installed as an Apache module — Manual
22. ↑ 1С-Битрикс — mod_php vs CGI vs FastCGI
23. ↑ PHP: HTTP-Аутентификация в PHP — Manual (21 июня 2009). Проверено 13 ноября
2009.
24. ↑ PHP | FastCGI
25. ↑ Оптимизируем загрузку PHP-кода в 22 раза, или почему FastCGI не ускоряет PHP
26. ↑ PHP: Использование PHP в командной строке — Manual (рус.) (21 июня 2009).
Проверено 13 ноября 2009.
27. ↑ 1 2 3 PHP Easter Egg (англ.). Проверено 16 ноября 2009.
28. ↑ HipHop for PHP: Move Fast
29. ↑ Компания Facebook открыла код высокопроизводительного PHP транслятора
30. ↑ Текст лицензии(англ.)
31. ↑ Проект находится в экспериментальной стадии
32. ↑ http://www.php.net/manual/migration5.incompatible.php
33. ↑ http://freelite.org/php/multi-threading-in-php-using-curl/
34. ↑ http://www.stableversion.com/node/3
35. ↑ http://freelite.org/php/multi-threading-in-php-using-sockets/
36. ↑ http://s-a-p.in/interactive/theme/emulation-multithreading
37. ↑ http://www.superjob.ru/research/articles/1012/programmist-php/
[скрыть]
п·о·р
[скрыть]
п·о·р
Поиск
Конец формы
Навигация
• Заглавная страница
• Рубрикация
• Указатель А — Я
• Избранные статьи
• Случайная статья
• Текущие события
Участие
• Сообщить об ошибке
• Портал сообщества
• Форум
• Свежие правки
• Новые страницы
• Справка
• Пожертвования
Печать/экспорт
• Создать книгу
• Скачать как PDF
• Версия для печати
Инструменты
• Ссылки сюда
• Связанные правки
• Спецстраницы
• Постоянная ссылка
• Цитировать страницу
На других языках
• Afrikaans
• Alemannisch
• Aragonés
• العربية
• Azərbaycan
• Boarisch
• Žemaitėška
• Беларуская
• Беларуская (тарашкевіца)
• Български
• বাংলা
• Brezhoneg
• Bosanski
• Català
• Cebuano
• Soranî / کوردی
• Česky
• Cymraeg
• Dansk
• Deutsch
• Ελληνικά
• English
• Esperanto
• Español
• Eesti
• Euskara
• فارسی
• Suomi
• Français
• Galego
• עברית
• िहनदी
• Hrvatski
• Magyar
• Bahasa Indonesia
• Íslenska
• Italiano
• 日本語
• ქართული
• Taqbaylit
• Қазақша
• ភសែខ្រ
• 한국어
• Kurdî
• Latina
• Lëtzebuergesch
• Lietuvių
• Latviešu
• Malagasy
• Македонски
• മലയാളം
• Монгол
• Bahasa Melayu
• မမမမမမမမမမ
• Plattdüütsch
• Nederlands
• Norsk (nynorsk)
• Norsk (bokmål)
• Polski
• Português
• Română
• Саха тыла
• Srpskohrvatski / Српскохрватски
• සිංහල
• Simple English
• Slovenčina
• Slovenščina
• Shqip
• Српски / Srpski
• Svenska
• தமிழ்
• తలుగు
• Тоҷикӣ
• ไทย
• Türkmençe
• Tagalog
• Türkçe
• Українська
• اردو
• O'zbek
• Tiếng Việt
• West-Vlams
• 吴语
• יִידיש
• 中文
• Bân-lâm-gú
• 粵語
• Последнее изменение этой страницы: 13:09, 4 июля 2010.
• Текст доступен на условиях лицензии Creative Commons Attribution/Share-Alike, в
отдельных случаях могут действовать дополнительные условия. Подробнее см.
Условия использования.
• Политика конфиденциальности
• Описание Википедии
• Отказ от ответственности