Pull to refresh

Если бы PHP был британским

Reading time4 min
Views4K
Original author: Dave Child
image

Когда Расмус Лердорф впервые собрал PHP, он решил, довольно предусмотрительно и невзирая на свои корни, не использовать в нем датский или даже гренландский. Кстати, правильно сделал, иначе было бы крайне неприятно с ним работать. Взамен он, находясь в этот момент в Канаде, выбрал местный язык. Нет, не французский, а именно этот идиотский диалект Королевского Английского, который еще называют «US English».

С тех пор британские разработчики на PHP выказывали свое недовольство по отношению к этому факту. О чем он думал? И, что самое важное, как нам исправить это надругательство? Как нам разработчикам проследить за тем, чтобы традиции Британской Империи соблюдались и в цифровую эпоху?

По наглой рыжей морде

$variable_name
Перво-наперво, и конечно же это и самое главное изменение из всех, что позволит достичь PHP элегантности — это удаление столь любимого в США символа и замена его чем-то более подходящим. Более стойким и … более надежным (прим. пер. тут имеет место игра слов, т.к. sterling — это как фунт стерлингов, так и надежный).
£variable_name

Аббревиатуры

Ничто так не ненавистно британцам, как аббревиатуры. Общение сокращениями — это неслыханно для улиц Лондона, т.к. ни один урожденный грамматик Британии не согласится использовать сокращения для отправки даже текстовых сообщений, таких как «До скор., дорога ОК, Спс, ББ!», а с большим удовольствием отпишет изысканное произведение в духе «Глубокоуважаемый сэр. Я прибуду, настолько быстро, насколько мне позволит это сделать время, а судя по моим наблюдениям — это произойдет примерно через час. Обещаю, что лошади будут скакать всю дорогу без устали и отдыха. С глубочайшим уважением.». Так, конечно, писать дольше, но мы же никуда не торопимся.

PHP же в свою очередь кишит аббревиатурами и акронимами, что совершенно не нужно:
str_replace()
is_int()
var_dump()
preg_match()
json_encode()
mysql_connect()
Следующие изменения должны улучшить ситуацию:
string_replace()
is_integer()
variable_dump()
perform_a_regular_expression_match()
javascript_object_notation_encode()
my_structured_query_language_connect()

Красноречие

if ($condition) {
    // Code here
} else {
    // Code here
}
Шекспир сгорел бы от стыда, если бы узнал, как его язык извратили, превратив в такое уродство. Краткость приветствуется только в правильном контексте, т.е. где-то в очень дальней дали, где ее будет не разглядеть, но не в нашем случае. Блок if … else — самый часто используемый код в PHP, поэтому мы должны сделать его как можно более безобидным. Вариантов его замены тьма-тьмущая, но я предлагаю такой:
perchance (£condition) { (пер. может быть)
    // Code here
} otherwise {            (пер. в противном случае)
    // Code here
}

Произношение

imagecolorallocate()
serialize()
newt_centered_window()
connection_status()
Здесь у меня меня просто не хватает слов. Какой уважающий себя джентльмен будет ожидать, что его поймут, если он так говорит. С трудом верится, что кто-то может настолько исказить слова, используемые в языке программирования. Они будут исправлены на следующие варианты, наравне с бесчисленным множеством схожих ошибок:
imagecolourallocate()
serialise()
newt_centred_window()
connexion_status()

Манеры

try {
    // Code here
} catch (Exception $e) {
    // Handle exception
    die('Message');
}
Удачный пример отсутствия каких-либо манер в PHP — это блок try … catch. Слишком уж прямолинейно для нового PHP. В дополнение ко всему слово «die» (пер. умри) слишком уж депрессивное. Новый же блок является, хотя и излишне многословным, но все же более вежливым и оптимистичным:
would_you_mind {                      (пер. вы не против)
    // Code here
} actually_i_do_mind (Exception £e) { (пер. вообще-то против)
    // Politely move on
    cheerio('Message');               (пер. всего хорошего)
}

Классы

Вероятнее всего, нет ничего более важного и укоренившегося в психологии Британцев, чем классы, и, пока все еще есть такая возможность исправить эту часть PHP, сделать это крайне необходимо:
class Republic {
    public $a;
    private $b;
    protected $c;
}
$example = new Republic;
Начнем с того, что текущая система не предназначена для классовой иерархии, и это неприемлемо. Поэтому мы начнем распределять классы по конкретным уровням: верхний, средний, рабочий, и ни один класс не сможет получить доступа к методам вышестоящего класса без специального разрешения этого класса (и, хотя, он и будет иметь это разрешение, это совершенно не будет уравнивать их, таким образом лишая права передавать эти права каким-либо иным нижестоящим классам). «Публичный» и «Приватный» в Британской классовой системе чаще всего являют собой синонимы (посмотрите, например, на номенклатуру школьного образования), потому они должны быть изменены, как и «Защищенный». Слово «new» (пер. новый), хотя и является допустимым, все же должно быть заменено на более подходящее для классовых вопросов:
upper_class Empire {       (пер. высший_класс)
    state £a;              (пер. общественный)
    private £b;            (пер. частный)
    hereditary £c;       &nbsp (пер. наследуемый)
}
£example = nouveau Empire; (пер. новый)

Солнце никогда не заходит…

Есть надежда на то, что эти несколько простых изменений изменят репутацию и статус PHP среди других языков. Более он не будет считаться бедным двоюродным братом американцем, вместо этого он сможет занять свое законное место Британского языка — Короля скриптовых языков.
Tags:
Hubs:
+214
Comments74

Articles