php

Еще один повод не любить PHP

Dmitry Vasiliev 11:33, 2008 4 29

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

Мне не нравится слабая типизация когда, например, можно складывать строку и целое и получать непредсказуемые результаты, типа такого кусочка:

<?php
echo "10" + 1, "\n";
echo "test" + 1, "\n";
echo "test" . 1, "\n";
?>

который выводит вот это:

11
1
test1

Но с этим можно жить, например, используя методы безопасного программирования (по иронии поиск в Google выводит на первые места безопасное программирование для PHP :-). Но вот такое поведение функции substr() (в PHP 4.3.10, который, почему-то еще используют хостеры) мне понять сложно:

<?php
var_dump(substr("test", 3));
var_dump(substr("test", 4));
var_dump(substr("test", -4, -3));
var_dump(substr("test", -4, -4));
var_dump(substr("test", -4, -5));
?>

вот с такими результатами выполняется кусочек выше:

string(1) "t"
bool(false)
string(1) "t"
string(0) ""
string(0) ""

Почему когда позиция больше, или равна длине строки возвращается булевское false? Почему этого не делается, например, в последнем случае? Почему не возвращается ожидаемая по логике пустая строка, которая позволяет без проблем писать в функциональном стиле? Конечно слабая типизация спасает авторов в данном случае и объединение строк трактует false (кстати, тоже не очень логично) как пустую строку, но в итоге весь язык держится на наборе различного рода подпорок, которые вместе составляют очень неустойчивую конструкцию.

Comments All comments

Comment by spleaner on 11:54, 2008 4 29

spleaner's Gravatar

php5 можно вполне себе юзать :) все зависит от того -- как :) я как-то даже писал себе махонький фреймворчек a-la ROR и все работало :)

а мы вот пишем тут PHP плюгин для IDEA :)

Comment by Dmitry Vasiliev on 12:05, 2008 4 29

Dmitry Vasiliev's Gravatar

Ну когда есть выбор я его просто не использую. :-) А вот когда его нет, приходится использовать что дают.

В PHP5 тоже работал - там уже и с классами получше и исключения есть. Но в целом, что бы быть удобным он должен быть другим языком. ;-)

Насчет плагина - правильно, все таки главный web-язык, "де-факто". ;-)

Comment by SW on 22:29, 2008 4 30

SW's Gravatar

PHP - плохой язык. Проблема заключается в том, что он "работает". И куча леммингов уже написали на нем кучи, некоторые из которых плохо пахнут. Такое ощущение, что непроработанность концепции заменили на слабую типизацию. Это еще ничего, но сверху потом еще и недо-ООП прикрутили :).

Comment by SW on 22:31, 2008 4 30

SW's Gravatar

Димка, только вспомни о скорости разработки. Сколько надо среднестатистическому юному гению от программирования времени для того, чтобы написать guestbook на python / perl? А на php? Вот так вот...

Comment by Dmitry Vasiliev on 12:28, 2008 5 2

Dmitry Vasiliev's Gravatar

Просто с PHP очень легко начать работать. Но, по идее, если ты развиваешься, то он перестает тебя устраивать. К сожалению большинство не развивается. :-(

С другой стороны есть много больших проектов сделанных на PHP и в этом случае работают профессионалы. Возможно им просто нравится PHP. :-)

Add comment

Name:
Email: (Never will be published.)
Web site:
Comment: (Paragraphs divided by empty lines, line breaks and links will be automatically formatted.)