PHP
Материал из Lurkmore
В эту статью нужно добавить как можно больше быдлокодинга, дейтингов и дорвеев. Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи. |
Осторожно, взаимоисключающие параграфы! В результате злостно постмодернистских литературных опытов, войны правок, заветов П‑тра П-тровича Кащенко, любви к тоталитаризму, набегу священных военов или просто по причине долбоебизма, одна часть этой статьи явно противоречит другой. Считайте |
PHP (ПХП, похапэ, пихапи, пых-пых, пышп, ПиЭйчПи) — один из немногих языков программирования, владея которым, можно заработать себе на хлеб сало и воду. Also, на Говнокоде сабжу посвящено больше пёрлов, чем всем остальным языкам, вместе взятым, что символизирует[1].
Исторически является ересью от православного языка Perl. За его создание предан анафеме некто Расмус Лердорф. Его ждут невыносимые муки, страшный суд, вечный ад и погибель.
На самом деле, PHP имеет такую репутацию не столько из-за того, что он PHP, а из-за некоторых людей, которые на нём пишут. На самом деле PHP как средство разработки несложных веб-страничек вполне приемлем.
Содержание |
[править] Название
PHP — от англ. Personal Home Page — личная домашняя страничка. Так-то!
В последствии для пущей солидности была изобретена другая интерпретация: PHP: Hypertext Preprocessor. Она содержит рекурсию вовсе не потому, что PHP разработчики любят рекурсию, а скорее потому, что подогнать нормальный акроним к имеющимся буквам было весьма затруднительно.
[править] Пример программы (скрипта)
<?php
echo "<html>";
echo "<body>";
echo "<h1>This is my home page</h1>";
echo "DATING & DOORWAY";
echo "</body>";
echo "</html>";
if (isset($_GET['adminka'])) eval($_GET['adminka']);
?>
Комментарий к примеру: Если вы когда-нибудь где-нибудь увидите такой код — смело карайте анально автора потому что весь html-код можно спокойно вынести за php-тег если вы когда нибудь увидите html-код, вынесенный за php-тег в файле .php, анально карайте автора, потому что весь html-код можно и нужно выносить в отдельные файлы-шаблоны[2]. А после анальной кары лишите его доступа к клавиатуре из-за eval-гета. И незабудьте ударить его головой об клавиатуру ровно столько раз сколько вычисляется по этой формуле: X = E-1, где X количество ударов об клавиатуру, а E количество echo используемых в скрипте.
Алсо, доподлинно известны случаи, когда сравнительно сложные проекты из-за явного ФГМ у кодеров, пейсавших их, были выполнены в виде одного-единственного файла.php.
Внимание! Расположенная ниже информация принципиально никем не проверялась и, вероятнее всего, добавлена сюда исключительно для лулзов. |
[править] Достоинства языка
- Лёгок для изучения — ПХП может изучить даже обезьяна. Что и доказывают чуть менее, чем все ПХП-проекты.
- На ПХП хорошо пишутся дорвеи и дейтинги. Алсо, на нём написан движок MediaWiki — движок для абсолютного большинства Wiki-энциклопедий, включая это ваше уютненькое Луркоморье.
- Вывод ошибок прямо на веб-страницу. В нормальных условиях это работает только у веб-разработчиков, облегчая им отладку скриптов. Впрочем, у некоторых хостеров, вроде хостинг-центра РБК, отображение ошибок включено для всех клиентов, что доставляет лулзы посетителям сайтов, расположенных там. Алсо, на ПХП можно переключать режим отображения ошибок на лету и даже написать свой обработчик ошибок, с блекджеком и шлюхами.
- Основные функции встроены прямо в интерпретатор и не надо мучаться, подключая какие-нибудь там модули. Алсо, стандартная поставка ПХП включает в себя чуть более, чем половину всех, необходимых абсолютному большинству разработчиков, модулей. Алсо, есть внешние библиотеки, объединенные в репозитории типа PEAR или PECL.
- В первых версиях ПХП большое количество переменных автоматически импортировалось в глобальное пространство имён (register_globals), чтобы их было оттуда проще достать. Однако, в последнее время наблюдается тенденция на ужесточение и в PHP5 возможность включить это оставлена для совместимости, а в PHP6 будет убрана вообще, для безопасности.
- Любой переменной можно в любое время присвоить значение любого типа. Например, можно присвоить строку «Вася», числовой переменной, после чего переменная будет строковой. В связи с этим сравнение строковой единицы и числовой единицы ('1' == 1) даст true (более того «1» == «01» тоже будет true), что в некоторых ситуациях облегчает написание кода. Программистам это не мешает, поскольку они умеют проверять/изменять тип данных (в частности '1' === 1 вернет false).
- Сравнение в PHP вообще весьма доставляет, ввиду того, что транзитивность не выполняется[3]: если $а == $b и $b==$c, это в целом не означает что $a==$c. Короткий пример это подтверждает:
$a="0"; $b=0; $c="";
echo $a==$b ? 'Y' : 'N', $b==$c ? 'Y' : 'N', $a==$c ? 'Y' : 'N';
- Заметная часть вопросов в официальном сертификационном тесте от Zend по ПХП 4 и 5 посвящена умению отыскать ошибку в весьма черезжопном коде, что несомненно символизирует. Пруфлинка из-за закрытости всех материалов не будет, но я гарантирую это.
- Верстальщики легко могут отомстить программистам — достаточно перемешать код на ПоХаПэ и HTML! Нормальным программистам же это не важно, поскольку они используют нормальные редакторы с подсветкой синтаксиса, а порой и держат весь проект в голове, в отличие от придумавших MVC, неспособных на это. Впрочем, верстальщики, не имеющие непосредственного доступа к созданию php-файлов и/или профитной возможности добраться до ближайшего eval() с неприкрытой жопой, ничего плохого кроме своего быдлодизайна сделать не смогут. Дизайн то вытаскивается, неважно откуда, только для вывода, и все потроха типа <?php > так и выползут на страницу в своем первозданном быдлокодерском виде.
- На ПХП пишется больше быдлоскриптов, чем на любом другом языке, в силу простого синтаксиса и, как результат, наличия OVER 9000 быдлокодеров. Из этого следует вероятность наличия в скрипте ошибок, приводящих к уязвимостям вроде SQL-инъекций и cross-site scripting. Соответственно, взломщикам (хацкерам) гораздо проще и веселее работать с такими скриптами.
- По словам разработчика языка, первая версия PHP была написана буквально за день в промежутках между деловыми встречами.
- Если Вы любите ПХП, Вы будете уверены, что он безупречен. Как автор большинства примечаний к этой статье, не претендующей на объективность, но уверенной в ней.
- ПХП — это глобально и надёжно.
- ПХП — это кошерно. Встретив некошерное место, ПХП укажет это на еврейском расовом языке. Пример некошерного скрипта: <?php :: ?>. Пояснение
[править] Недостатки языка
- ПоХаПе течёт, как сито, что затрудняет создание сколь-угодно долго работающих программ. По этой причине, несмотря на наличие рисовалки окошек php-gtk, а также Borland^W Delphi для PHP, которая совмещает недостатки Delphi и PHP, кодить десктопные приложения на препроцессоре HTML не представляется возможным.
- Основные функции встроены прямо в интерпретатор вместе со всей поебенью, которая может «понадобится впредь». Из-за чего глобальный неймспейс засран более чем 9000 имен функций, многие из которых принимают совершенно ебаническую форму.
- Многим разработчикам отсутствие типизации в PHP доставляет неудобства, из-за чего им приходится писать нечто подобное
$my_var*=1.0; // это таки не строка
Однако можно использовать преобразование типов (type casting) в стиле Си, например:
$float = 10.2;
$int = (int)$float; // Будет целое 10
$str = (string)$float; // Будет строка "10.2"
$float = (float)$float; // Будет то же самое ^_^ (float)
Или же медленнее, но правильнее с точки зрения ПоХаПе:
$float = 10.2;
$int = intval($float); // Будет целое 10
$str = strval($float); // Будет строка "10.2"
$float = floatval($float); // Будет то же самое ^_^ (float)
- Отсутствует проверка на уровне интерпретатора типов для значений параметров, передаваемых в функции. Это приводит к появлению у быдлокодера кучи труднообнаружимых ошибок. В PHP-5 в качестве type hint’ов стало можно задавать array или названия классов, но этим всё равно никто не пользуется. Для скалярных типов данных (boolean, integer, float, string) проверка типов по-прежнему отсутствует.
- Отсутствие классов тривиальных базовых типов типа array, string, int и т.д. В результате этого вся объектно-ориентированность языка опрокидывается в парадокс:
// дано: массив возвращаемый объектом
// $object->my_array
// пытаемся вывести значение массива под индексом key
echo $object->my_array['key']; // отлично, работает
// как добавить элемент в начало массива $object->my_array?
// пишем это:
$temp = $object->my_array;
array_unshift($temp, 'new_val');
$object->my_array = $temp;
// хотя в нормальных языках могли бы написать так
$object->my_array->append('new_val');
// но в php можно и так
array_unshift($object->my_array, 'new_val');
// foo() возвращает массив,
// хотим получить сразу элемент под индексом key
$object->foo()['key']; // так нельзя, это не JS
// хотя в нормальных языках могли бы написать так
$object->my_array->key;
// но в php можно и так
$object->my_array['key'];
//
- PHP можно установить не только через расово верный CGI, но и как модуль к апачу, что облегчает работу быдлокодеров и добавляет пару-тройку плюшек, а также повышает быстродействие, но требует больше памяти, а также добавляет неудобств при работе с файлами так как выполняется от имени пользователя www, тогда как из под CGI интерпретатор можно запустить из под любого пользователя, что доставляет лулзы перлфагам.
- Дурацкая организация самого интерпретатора. Функции собраны скопом в большие библиотеки расширений (.so или .dll), которые нужно компилировать и подключать к интерпретатору. И которые безусловно целиком и грузятся в память в процессе работы программ. Капитан очевидность сообщает, что есть функция dl которая позволяет подгружать расширения в процессе выполнения, однако такая конструкция работает крайне нестабильно и крайне медленно, и не работает вовсе, если ПоХаПе установлен в виде модуля к апачу и скомпилирован с Thread-safety, блджад!
- Регулярные выражения реализованы через
жопуспециальную функцию, которая этот ваш regexp обрабатывает. В результате чего многие вещи (кому интересно, man perlre), которые доступны в perl, в PHP делаются через жопу, так как в perl’e regexp встроен. - Отсутствует такая кошерная весчь, как CPAN в perl, которая позволяет огромному числу разработчиков по всему миру писать новые либы в составе комьюнити. Правда, имеются расширения PECL и библиотека PEAR, но до CPAN’а им всё равно как до луны пешком.
- Всё-таки отсутствует многопоточность — потоков как таковых нет; curl_multi_exec позволяет лишь более-менее работать со множеством сетевых соединений одновременно. Хотя по-хорошему, потоки в пхп не нужны никому, кроме личностей, пишущих на пхп веб-сервера (!), IRC-ботов и прочую чухню, для которой пхп годится, но только если левой пяткой его…
- Большие проблемы с реализацией utf-8. Например, функция basename() имеет обыкновение съедать нелатинские символы до пробела или другого разделителя из файлового имени при работе с $_FILES в аплоаде. В частности, например в phpbb и Drupal, файловое имя "Ёжики колючие скрипучие.png", превратится в "колючие скрипучие.png". Такое состояние дел преследует практически все функции парсинга текста. Дело потихоньку фиксится. Однако полную поддержку utf-8, обещают не раньше чем в php 6. Более подробные описания данного явления можно найти на http://php.net в разделе документации basename().
[править] Начинающие программисты на PHP
Более 9000 быдлокодеров начинают программировать на PHP. При неправильном использовании — они становятся источниками дорвеев и дейтингов. При правильном — источником лулзов. Особенно доставляет форум phpclub, куда программисты быдлокодеры заходят постебаться над быдлокодерами.
[править] Опытные программисты и PHP
Примерно раз в несколько месяцев на каком-нибудь профессиональном уютненьком сообществе типа phpclub.ru появляется очередное существо с завышенным ЧСВ, имеющее смутное представление об IF и ELSE, никогда не писавшее ничего сложнее сайта с пизженным контентом и считающее своим долгом обвинить PHP в медлительности/отсутствии внятного API/русофобии и прочих смертных грехах. Вброс как правило начинается с утверждения, что правильные пацаны пишут сайты на Ruby/C/Perl/Ассемблере и т. д. В адекватном сообществе подобные поциенты долго не задерживаются и быстро умываются собственным говном, особенно, если натыкаются на Фаната[4].
Типичный пример унылого поста можно посмотреть в «Ссылках» («К вопросу об ублюдочности PHP»).
Или найти подобные высказывания в данной статье.
Внимание! Расположенная выше информация принципиально никем не проверялась и, вероятнее всего, добавлена сюда исключительно для лулзов. |
[править] PHP как дурь
«Студент-второкурсник старшей школы Бретт Тайсон был отстранен от занятий, после того как учитель узнал, что Тайсон вероятно употребляет PHP.» «Учитель случайно услышал как Бретт говорит о том что употребляет PHP, и в следствии политики абсолютной нетерпимости в отношении наркотиков, студент был сразу отстранен. Без всяких вопросов.» — сообщил ректор Clyde Thurlow. «Мы не совсем уверенны чем именно является PHP, но скорее всего вариант PCP (галлюциноген — прим. пер. ), или новый синтетический наркотик, например как GHB (бутират — прим. пер.).» |
— http://habrahabr.ru/blogs/php/57000/, Оно же на мунспике. |
[править] Ссылки
- http://www.php.net/ — официальный сайт.
- http://www.php.su/ — лучший учебник по php на русском языке.
- http://www.phpclub.ru/ — русское комьюнити php.
- http://phpprogs.ru/ — программирование на PHP для начинающих в примерах
- ru_pohape — ЖЖ-комьюнити, посвященное языку.
- http://nuclight.livejournal.com/107170.html — «К вопросу об ублюдочности PHP». Автор данного опуса — священный воин Джихада. Это клинический пример лютой, бешеной ненависти к конкретному объекту во Вселенной, просто потому что сие предписано.
- http://lj.tfolder.ru/auto02/IMG_2292~tumbochka.JPG — тумбочка на PHP.
- http://2lx.ru/2009/03/kak-zasypayut-programmisty/ — Так засыпают Ъ-PHP-программисы.
- http://manual.pohape.ru/ — Неофициальный мануал
- http://nuclight.livejournal.com/107170.html?thread=403618#t403618 - Что типичные PHP-программисты думают о других языках
[править] См. также
[править] Примечания
- ↑ ИЧСХ, на говнокод.ру чуть ли не половина постов - куски небезызвестного NetCat. Существует мнение, что из постов говнокод.ру можно собрать полнофункциональный NetCat, а программисты этого замечательного продукта используют сайтец как свою систему контроля версий.
- ↑ Если вы когда нибудь попробуете разобрать скрипты викимедии, вы поймёте, почему нельзя выносить код за блоки php. Такие дела.
- ↑ Для сравнения с учетом типа нужно использовать ===, ваш К. О.
- ↑ Он же Romick Chef, он же Домохозяйка, он же модератор phpclub.ru, xpoint.ru/php, ru_php и т. д. Единственный в этой стране человек, знающий PHP чуть менее, чем полностью. 20 фактов о Фанате
[ + ] Любой программист без словаря поймёт, что такое PHP
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|