Новые изменения в PHP (Страница 1) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#1 29-01-12 20:41:16

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 16.0.912.77

Новые изменения в PHP

http://habrahabr.ru/blogs/php/136800/

Хочу обсудить этот массовый пиздец

Ну начнем с самого начала

Примеси

Ключевая новинка 5.4 — примеси. Они послужат в PHP заменой мультинаследования. Каждая примесь задается отдельным «классом» через ключевое слово trait. Внутри примеси могут быть определены методы, которые станут доступны в классе, к которому будут подключены примеси. Подключение примесей происходит с помощью языковой конструкции use. Имена примесей задаются через запятую и все их методы становятся доступны внутри класса.

Их уже обсудили и доказали полную несостоятельность в PHP здесь - https://stoplinux.org.ru/forum/viewtopic.php?id=2111

Нативная поддержка Юникода

Да-да. Больше не придется использовать расширения, вроде multibyte и ему подобных. Все строковые функции отлично понимают юникод.

Представьте! Языку уже восемнадцать лет! А он до сих пор где-то на уровне сырой беты. Только сейчас в PHP появился юникод! Это есть уже везде, в Ruby, Perl, Python, .NET, Java! Но в PHP только сейчас! Вы только представьте, толком ни одно существующее решение на PHP не может обрабатывать строки с юникодом.

Array dereferencing support

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

function foo() {
  return array(1, 2, 3);
}

echo foo()[0]; // 1

А это вообще тупые костыли, это есть в руби еще с самого его появления.


Short syntax for arrays

В PHP 5.4 теперь доступна короткая запись массива, без ключевого слова array.

// Раньше приходилось писать так:
$array = array(1, 2, 3);

// Теперь можно так:
$array = [1, 2, 3];

// И даже так:
$array = ['first' => 1, 'second' => 2];

А это вообще! Ради этого стоило выпустить новую мажорную версию.

Встроенный веб-сервер

Отныне, вместе с дистрибутивом PHP будет поставляться встроенный веб-сервер, предназначенный исключительно для разработки. Его можно будет запустить из консоли и повесить на какой-нибудь порт:
php -S localhost:8000

PHP еще не умеет многопоточность, зато есть встроенный вебсервер. Нет слов!

Upload progress

Несмотря на то, что в HTML 5 File API реализован механизм отслеживания процесса загрузки файла на сервер (размер загруженной части отдает сам браузер), в PHP 5.4 появится дополнительный источник мониторинга состояния загрузки. Он будет храниться в сессии пользователя в ключе, например, upload_progress_myform и мы в любой момент сможем дернуть его Ajax'ом для захвата мира отрисовки прогресс-бара.

Офигеть как круто! В любом нормальном языке подобное можно реализовать созданием нового потока и просто проверять размер файла. Опять нет слов!

Вызов метода или свойства класса выражением

Еще одно приятное нововведение, которое поможет нам сэкономить строчку кода. Для того, чтобы вызвать свойство или метод класса, не нужно будет больше запоминать его в отдельную переменную.

class A {
  public static function foo_bar() {
    return '123';
  }
}

$foo = 'foo';
$bar = 'bar';

echo A::{$foo . '_' . $bar}(); // 123 

Опять же! К примеру руби, в котором есть офигенные фичи метапрограммирования, подобное можно было сделать еще 100 лет назад.

Scalar type hints

PHP явно идет в сторону строгой типизации. Раньше для автоматической проверки типа в аргументах метода можно было указывать только массивы и имена классов. Теперь такая возможность распространяется на некоторые другие типы: int, float и boolean.

function foo(int $a, bool $b) {
  return true;
}

Ну и какой профит от этого? Опять же, если я попытаюсь сложить строку с числом, мне PHP опять ничего не скажет?

Улучшена производительность @

Оператор @ служит в PHP для отключения вывода ошибок на текущей строке кода. Раньше в высоко нагруженных приложениях использовать @ было невозможно из-за довольно ощутимых тормозов. Поэтому лично я ее больше не использую нигде.

В конце-концов приглушать ошибки — это странно. Ошибки нужно исправлять или ловить Exceptions.

У меня просто нету слов, одни эмоции! Приглушивать ошибки! Нет, это просто УЖАС!

Кроме того из PHP наконец-то выпилены register_globals, long_arrays и прочие директивы, заждавшиеся удаления.

Отлично! Вот юзеры хостингов будут довольны, что теперь 99% рабочих решений перестанут быть совместимы с минорным обновлением.

Неактивен

#2 01-02-12 16:33:43

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641
Windows XPOpera 11.61

Re: Новые изменения в PHP

Ну ты суров чувак! smile
Большинство замечаний справедливо.
Однако ж:

Babusha пишет:

В любом нормальном языке подобное можно реализовать созданием нового потока и просто проверять размер файла.

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

Babusha пишет:

если я попытаюсь сложить строку с числом, мне PHP опять ничего не скажет?

Это вообще распространенный недостаток интерпретаторов, у них ниша такая. В JavaScript, к примеру, тоже можно.

Babusha пишет:

Приглушивать ошибки! Нет, это просто УЖАС!

Это ж веб. Ошибка выводится прямо на веб-страницу. не надо юзера зря пугать, пусть ошибки обрабатываются как-то по-другому. надо дать возможность.


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

#3 01-02-12 18:18:34

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 16.0.912.77

Re: Новые изменения в PHP

DonDublon3 пишет:

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

Получается, что PHP не может использовать потенциал многопроцессорных систем, зачем он тогда нужен? Как делать хайлоад?

DonDublon3 пишет:

Это вообще распространенный недостаток интерпретаторов, у них ниша такая. В JavaScript, к примеру, тоже можно.

В Ruby строгая динамическая типизация, строгая типизация на корню решает проблему выстрела себе в ногу с ошибками тип данных.

DonDublon3 пишет:

Это ж веб. Ошибка выводится прямо на веб-страницу. не надо юзера зря пугать, пусть ошибки обрабатываются как-то по-другому. надо дать возможность.

Это же дебильноватый PHP, в рельсах сделали принципиально другой подход к ошибкам.

Неактивен

#4 01-02-12 20:53:43

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 16.0.912.77

Re: Новые изменения в PHP

petrun пишет:

Хайлоад, слово нынче модное? А ничгео ,что часто код там вообще не паралелят? В принципе.

Не паралелят не потому, что ненужно, а потому, что - нельзя  big_smile. Это тоже самое, почему на линуксе нету нормальных игр, не потому, что они не нужны, а потому, что средства типа директх отсутствуют, есть, конечно оупенгл, но где ваш оупенгл?

petrun пишет:

Ну да. А в пхп и яваскрипте не так, и что? Во первых с любой динамической типизацией все равно можно нарватся на ошибки в рантайме.

Я уже говорил о полной несостоятельности нестрогой типизации на версусит, почти все со мной согласились, а вот ошибки в рантаймме - да, беда, это - правда.

petrun пишет:

Строгая типизация - оверхед.

Нестрогая типизация - оверхед, корявая и глючная недоделанная фича.

petrun пишет:

Ок, ну и где ваши рельсы?

http://rubyonrails.org/applications

Да где угодно!

Неактивен

#5 01-02-12 22:22:14

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 16.0.912.77

Re: Новые изменения в PHP

petrun пишет:

Это как так? Поподробнее пожалуйста.

Нестрогая типизация - не нужна, это просто издевательство над программистом.

petrun пишет:

Большие проекты я имел в виду. Хайлоад ваш любимый.

Я тебе ссылку дал, самые популярные сайты, которые написаны на рельсах.

petrun пишет:

И все-то вы знаете. Проекты с какой нагрузкой вы строили?

И все-то вы не знаете, вам что-то не нравится?

Неактивен

#6 02-02-12 08:58:37

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641
Windows XPOpera 11.61

Re: Новые изменения в PHP

Babusha пишет:

Получается, что PHP не может использовать потенциал многопроцессорных систем, зачем он тогда нужен? Как делать хайлоад?

А по чем тут это? скрипт пхп запускается сервером, он же создаёт потоков сколько ему нужно и сам раскидает по процессорам. Конечно, в самому пхп тоже неплохо бы многопоточность иметь, раньше я как-то об этом не задумывался.

Babusha пишет:

В Ruby строгая динамическая типизация

Я же сказал - распространенный, а не присущий всегда.

Babusha пишет:

в рельсах сделали принципиально другой подход к ошибкам.

Озвучь в двух словах, и куда будет отправлено сообщение в случае ошибки когда ruby выполняется для генерации веба.


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





Подвал форума

Под управлением FluxBB
Модифицировал Visman

Яндекс.Метрика