LINUX.ORG.RU

PHP 7.0.0

 , ,


4

5

Команда разработчиков PHP рада сообщить о релизе PHP 7.0.

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

Abstract Syntax Tree

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

PHPNG

Произведён рефакторинг ядра, который существенно повышает производительность и улучшает использование памяти, а самое главное, дает фундамент для крупных улучшений в будущем, включая JIT. Подробности.

Scalar Type Hints

Добавлены четыре новые декларации для скалярных типов: int, float, string и bool. По умолчанию используется нестрогий режим проверки и данные будут приводиться к тому типу, что указан в декларации:

function add(int $a, int $b) {
    // is_int($a) - true
    // is_int($b) - true
    return $a + $b;
}

add("1", "2");

С помощью новой директивы declare(strict_types=1); можно включить режим строгой проверки. Режим распространяется на тот файл, где вызван declare, а не тот, где была определена вызываемая функция. Если типы не совпадут, это приведет к ошибке:

declare(strict_types=1);

function add(int $a, int $b) {
    return $a + $b;
}

add(1.5, 2.5);
// Catchable fatal error: Argument 1 passed to add() must be of the type integer, float given

В дополнение к пользовательским функциями, cтрогий режим проверки типа также влияет на функции стандартной библиотеки и расширений:

declare(strict_types=1);

$foo = substr(52, 1);
// Catchable fatal error: substr() expects parameter 1 to be string, integer given

Return Type Declarations

Добавлена возможность объявить тип возвращаемого значения для функций, генераторов и методов.

Краткий пример синтаксиса в действии:

function foo(): array {
    return [];
}

Здесь так же, как и для type-hint, можно объявить строгий режим. Дополнительные примеры можно найти в RFC.

Uniform Variable Syntax

Введён единый синтаксис переменных. Благодаря этому изменению следующие выражения стали корректными:

// support missing combinations of operations
$foo()['bar']()
[$obj1, $obj2][0]->prop
getStr(){0}

// support nested ::
$foo['bar']::$baz
$foo::$bar::$baz
$foo->bar()::baz()

// support nested ()
foo()()
$foo->bar()()
Foo::bar()()
$foo()()

// support operations on arbitrary (...) expressions
(...)['foo']
(...)->foo
(...)->foo()
(...)::$foo
(...)::foo()
(...)()

// two more practical examples for the last point
(function() { ... })()
($obj->closure)()

// support all operations on dereferencable scalars (not very useful)
"string"->toLower()
[$obj, 'method']()
'Foo'::$bar

Но не обошлось и без потери обратной совместимости:

                        // old meaning            // new meaning
$$foo['bar']['baz']     ${$foo['bar']['baz']}     ($$foo)['bar']['baz']
$foo->$bar['baz']       $foo->{$bar['baz']}       ($foo->$bar)['baz']
$foo->$bar['baz']()     $foo->{$bar['baz']}()     ($foo->$bar)['baz']()
Foo::$bar['baz']()      Foo::{$bar['baz']}()      (Foo::$bar)['baz']()

Generator Return Expressions

Добавлена возможность возвращать значения из генераторов.

function gen() {
    yield "Hello";
    yield " ";
    yield "Sun!";

    return "Goodbye Moon!";
}

$gen = gen();

foreach ($gen as $value) {
    echo $value;
}
// Hello Sun!

echo $gen->getReturn(); // Goodbye Moon!

Generator Delegation

Введён новый синтаксис yield from <expr>, позволяющий генераторам делегировать операции Traversable объектам и массивам.

function hello() {
     yield "Hello";
     yield " ";
     yield "Sun!";
     yield " ";

     yield from goodbye();
}

function goodbye() {
     yield "Goodbye";
     yield " ";
     yield "Moon!";
}

$gen = hello();
foreach ($gen as $value) {
     echo $value;
}

// Hello Sun! Goodbye Moon!

Anonymous classes

Добавлена поддержка анонимных классов.

Они могут быть использованы вместо полного определения класса для одноразовых объектов:

(new class extends ConsoleProgram {
    public function main() {
       /* ... */
    }
})->bootstrap();

Closure::call

PHP7 добавляет легкий способ переопределить $this для анонимной функции прямо во время вызова с помощью Closure::call().

class A {
    private $x = 1;
}

// Pre PHP 7 code
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
echo $getX();

// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new A);

Throwable Interface

Изменена иерархия исключений. А именно, введён интерфейс Throwable, который реализуют два базовых исключения: Exception и Error. Пользовательские классы не могут реализовывать этот интерфейс.

Таким образом, новая иерархия выглядит вот так:

  • interface Throwable
    • Exception implements Throwable
      • ...
    • Error implements Throwable
      • TypeError extends Error
      • ParseError extends Error
      • AssertionError extends Error

Unicode Codepoint Escape Syntax

Добавлен новый экранирующий символ \u, который позволяет указывать специфические unicode-символы внутри PHP-строк:

echo "\u{aa}"; // ª
echo "\u{0000aa}"; // ª (same as before but with optional leading 0's)
echo "\u{9999}"; // 香

Combined Comparison (Spaceship) Operator

Добавлен новый оператор комбинированного сравнения: (expr) <=> (expr). Он возвращает 0, если оба операнда равны, 1 в случае, когда левый операнд больше правого и -1, если правый больше левого.

echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

Group Use Declarations

Добавлена возможность группировки use деклараций.

// Before:
use Doctrine\Common\Collections\Expr\Comparison;
use Doctrine\Common\Collections\Expr\Value;
use Doctrine\Common\Collections\Expr\CompositeExpression;

// After:
use Doctrine\Common\Collections\Expr\{ Comparison, Value, CompositeExpression };

Null coalesce operator

Ещё один новый оператор — ??, который возвращает левый операнд, если тот не имеет значение NULL, в противном случае возвращается правый операнд. В отличии от короткого тернарного оператора ?:, он работает как isset().

// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalesces can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

Прочие изменения

Особо стоит отметить, что из PHP была удалена вся функциональность помеченная устаревшей в версиях 5.x.x, включая расширения ereg и mysql.

Следующие возможности объявлены устаревшими и будут удалены в будущих версиях:

  • Конструкторы классов в стиле PHP 4.
  • Статические вызовы нестатических методов.
  • Опция salt для password_hash().
  • Опция capture_session_meta для SSL context.

>>> Руководство по миграции с PHP 5.6.x

>>> Исходники для загрузки

>>> Список изменений

★★★★★

Проверено: maxcom ()
Последнее исправление: cetjs2 (всего исправлений: 3)
Ответ на: комментарий от kiotoze

Т.е. чтобы обслуживать старый код на php? А потом городить новый, чтобы в будущем была работа вновь его поддерживать? Шикарно =)

th3m3 ★★★★★
()
Ответ на: комментарий от no-such-file

Они не работают - это твоя проблема.

Fixed.

Deleted
()
Ответ на: комментарий от th3m3

чтобы делать новые проекты на php
ну и старый понятное дело никто не отменял, но если работает - то не трогай

kiotoze ★★★★
()
Ответ на: комментарий от anonymous

Но не обошлось и без потери обратной совместимости

Вот он и фейл.

Да ладно ?! Это же типично для PHP.

История третьего питона ничему не научила?

Воспринимающееся близко к катастрофе в других языках, в PHP - нормальное явление. :-)

AS ★★★★★
()
Ответ на: комментарий от Kilte

Что сложного в том, чтобы прошерстить проект на наличие таких мест и проставить скобочки ?

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

что же теперь надо было продолжать тащить за собой всё то древнее говно в новые версии?

А в недавнем обновлении Perl5 убрали конструкции, объявленные устаревшими в 2000 году где-то. При этом, из-за появления Perl6 босать Perl5 планов нет. Пока, по крайней мере.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от umren

Тот же js. Он быстрее(node.js), асинхронен, может работать 24/7.

Что нам даёт php? Очень медленный(все остальные его уделывают, тот же Python), сразу умирает после выполнения, все говнокодят как попало, не придерживаясь какой либо методологии разработки.

Да что тут говорить, никто не делает серьезные проекты на php уже давно. Есть правда странные люди, которые используют всякие CMS типо Wordpress, а дальше мучаются с нагрузками, если проект выстреливает. Или взламывают, т.к. говнокод - много дыр. Примеры 10-летней давности, что якобы фейсбуки и вконтатики работают на php - эти аргументы всегда дико доставляли.

Ну нету у php никаких плюсов, чтобы делать современные проекты на нём. Он даже не умеет многие вещи, которые требуются современному вебу(асинхронность), чего уж тут говорить.

Всё что я вижу, дак это только тех - кто давно на нём пишет. И не хочет выходить из зоны комфорта, чтобы пересесть на что-то более адекватное и актуальное в отрасли.

Да, работы полно. Ведь полно старого говнокода, кому-то его нужно поддерживать. Опять же, пишут новый. И такая вот рекурсия.

th3m3 ★★★★★
()
Ответ на: комментарий от umren

что за языки, как обскакали ?

Да любой язык из этого века лучше похапэ. Собственно, похапэ - это и не язык в привычном понимании, а пачка костылей для HTTP, склеенных убогоньким наколенным интерпретатором. Этим можно пользоваться от безысходности разве что (когда другой работы нет).

anonymous
()
Ответ на: комментарий от th3m3

Он быстрее(node.js)

Нет, бенчмаркать надо правильно

Очень медленный(все остальные его уделывают, тот же Python)

Опять ты врешь

Да что тут говорить, никто не делает серьезные проекты на php уже давно.

No comments

Он даже не умеет многие вещи, которые требуются современному вебу(асинхронность), чего уж тут говорить.

давно умеет, если нужно

Вообщем, твои аргумент неадекватны

umren ★★★★★
()
Ответ на: комментарий от th3m3

Тот же js. Он быстрее(node.js), асинхронен, может работать 24/7.

«Наше говно лучше вашего говна.»

anonymous
()
Ответ на: комментарий от anonymous

Жопаскрипт конечно тоже недоязычок. Но по сравнению с похапэ - это просто гигантище. Там хоть какие-то намеки на дизайн, пусть идеи и стырены у других. Похапэ же делался левой пяткой дауна, не имеющего никакого понятия и CS.

anonymous
()
Ответ на: комментарий от th3m3

вот только другие языки его обскакали много раз за эти годы

Это какие? o_O

PHP — да, обскакал многих. Тот же Perl, например, PHP обогнал его по Tiobe 9 лет назад, в 2009-м. Но вот PHP пока в его нише, не смотря на падение популярности, никто пока не обскакивал. И Ruby, и Python в области Web-приложений по-прежнему сильно уступают по популярности. С остальными — ещё хуже.

Какой смысл использовать php в 2016 году?

Какой смысл от него отказываться в 2016-м? Особенно после появления инфраструктуры Composer и всего сахара из 5.3/5.4/5.5.

KRoN73 ★★★★★
()
Ответ на: комментарий от th3m3

Тот же js.

JS — язык, мало пригодный для серьёзной разработки. Он построен на крайне ненадёжном синтаксисе, который трудно поддерживать. Язык write-only из серии Perl или Ruby.

Да что тут говорить, никто не делает серьезные проекты на php уже давно.

Доказательств сему субъективному утверждению, конечно, не будет? :)

Ну нету у php никаких плюсов, чтобы делать современные проекты на нём.

Есть такое слово — «инфраструктура». Она решает.

Он даже не умеет многие вещи, которые требуются современному вебу(асинхронность)

Про React, конечно, ты не слышал?

KRoN73 ★★★★★
()
Ответ на: комментарий от umren

Нет, бенчмаркать надо правильно

Мы говорим про «из коробки». Они используют голый php - он проигрывает, а потом добавляют костыль и внезапно php показал лучше результат, а нода как была нодой, так и осталась, лол.

Опять ты врешь

Ага. Взяли редакцию Python 3 от сентября и версию php 7 от декабря. Пока этот php 7 доползёт до продакшена, пройдёт лет 5. За это время Python его уделает, а разработчики на php уже могут успеть перейти на что-то более адекватное.

давно умеет, если нужно

Очередной костыль для php.

th3m3 ★★★★★
()
Ответ на: комментарий от no-such-file

А указатели так

Да ради бога. Только вот непонятно, почему у похапэмакак так, а в остальной CS не так.

Где ты тут увидел рефлексию, болван.

https://ru.wikipedia.org/wiki/Отражение_(программирование)#PHP

Похапэмакаки такие похапэмакаки.

anonymous
()
Ответ на: комментарий от umren

Очень медленный(все остальные его уделывают, тот же Python)

Опять ты врешь

Тут лучше смотреть в нужной нише. Так примерно:

https://www.techempower.com/benchmarks/#section=data-r11&hw=peak&test...

И обращать внимание, конечно, на Full ORM варианты. Получается:

zendframework1     2,836
nodejs-mysql       2,668
flask-nginx-uwsgi  2,367
bottle-nginx-uwsgi 1,980
django             1,570

Но, на самом деле, производительность тут дело десятое. Решает в первую очередь инфраструктура, удобство разворачивания и поддержки. Тот же Ruby так и не набрал популярность, потому что каждое обновление конечной системы (тот же Redmain — постоянно на этих граблях танцую) — это лотерея с не самым высоким шансом выигрыша. С Python ситуация заметно лучше, но тоже далека от идеала. Сколько раз у меня ломался на обновлениях тот же Trac — не пересчитать...

KRoN73 ★★★★★
()
Ответ на: комментарий от th3m3

Он даже не умеет многие вещи, которые требуются современному вебу(асинхронность), чего уж тут говорить

http://reactphp.org/

no-such-file ★★★★★
()
Ответ на: комментарий от th3m3

Тот же js

Ну да, что же ещё. «Взявший в руки молоток вокруг себя видит только гвозди»(с)

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

Да что тут говорить, никто не делает серьезные проекты на php уже давно

Да, работы полно. Ведь полно старого говнокода, кому-то его нужно поддерживать. Опять же, пишут новый

В каждой теме одно и то же... Когда ты перестанешь свои фантазии выдавать за действительность?

Всё что я вижу, дак это только тех - кто давно на нём пишет. И не хочет выходить из зоны комфорта

Всё, что я вижу - это фанатика nodejs, который в каждой теме сует свою ноду к месту, и не к месту. Раньше питонистов таких встречал. Блеск в глазах, другие языки у них не нужны, несут бред. Хотя на практике, в большинстве случаев, ничем от тех же PHP'шников не отличаются. Надеюсь пройдет немного времени, и вы тоже успокоитесь.

чтобы пересесть на что-то более адекватное и актуальное в отрасли.

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

nguseff
()
Ответ на: комментарий от th3m3

Ага. Взяли редакцию Python 3 от сентября и версию php 7 от декабря. Пока этот php 7 доползёт до продакшена, пройдёт лет 5.

Посмотри бенчмарки php 5.6 и 5.5, все уделывают Питон. Они уже старые.

Мы говорим про «из коробки».

libuv это изкаропки в жаваскрипте? ну реактпхп тоже ее умеет, так что это самое что нинаесть правильное сравнение.

umren ★★★★★
()
Ответ на: комментарий от KRoN73

PHP — да, обскакал многих. Тот же Perl, например, PHP обогнал его по Tiobe 9 лет назад, в 2009-м.

2009 + 9 = 2018

KRoN73 ★★★★★ (05.12.2015 13:23:51)

2015

Virtuos86 ★★★★★
()
Ответ на: комментарий от nguseff

Я тебя немного расстрою, раньше как раз был Питонистом, теперь на Ноду перешёл. А ещё раньше на php-говнокодил.

После того, как перешёл с php на Python - понял, какой отстой php. JS сегодня мне позволяет писать на клиенте и на сервере. Python время от времени ещё нужен, но совсем не для веба.

Для веба сегодня достаточно JS. У Python ещё полно областей где он нужен.

А php уже давно нужно было закопать. Мыши кололись, но продолжали есть кактус.

Может тогда и говорить с тобой не о чем будет, потому что больше аргументов у тебя не останется?

Ой, всё. Нужны мне вы больно. Время тратить ещё. Спорить. Всё и так понятно же. Фанатики, они и в Африке фанатики.

th3m3 ★★★★★
()
Ответ на: комментарий от KRoN73

Тот же Ruby так и не набрал популярность, потому что каждое обновление конечной системы (тот же Redmain — постоянно на этих граблях танцую) — это лотерея с не самым высоким шансом выигрыша

какого хрена ты судишь о всей инфраструктуре и популярности ruby по одному продукту, «иксперд» ты диванный (и кстати Redmine правильно, а не Redmain). Может у тебя руки из жопы вот ты и танцуешь при каждом обновлении redmine. Если быть объективным, то твоему пхп, которым ты уже по видимому пропитан до инфраструктуры нормальных современных языков еще ползти и ползти, не говоря о самом языке, тут уже ничего нельзя сделать. Тот же композер на который ты никак не нарадуешься (и я тебя понимаю) собезъяничали с других библиотек настоящих языков программирования

anonymous
()
Ответ на: комментарий от Virtuos86

2009 + 9 = 2018
KRoN73 ★★★★★ (05.12.2015 13:23:51)

ЛОЛ. Ну а что ты хотел? За долгие годы говнокодерства на похапэ мозг скукоживается до грецкого ореха. Тут один многозвездочный не различает жаву и жаваскрипт, другой вот арифметику забыл и не может распарсить код на руби. И это спецы какбэ. Страшно представить что из себя представляет анскильный похапэ-джун? Хоть шнурки завязывать они умеют?

anonymous
()
Ответ на: комментарий от anonymous

Может у тебя руки из жопы вот ты и танцуешь при каждом обновлении redmine.

Видишь, а в похапэ можно не танцевать даже с руками из жопы. Плюс похапэ.

Если быть объективным

К тебе не относится.

пхп до инфраструктуры нормальных современных языков еще ползти и ползти

Пруф.

не говоря о самом языке

Пруф.

тут уже ничего нельзя сделать

Пруф.

собезъяничали с других библиотек

И чё?

anonymous
()
Ответ на: комментарий от anonymous

Может у тебя руки из жопы вот ты и танцуешь при каждом обновлении redmine.

Этот же тот крендель, у которого сервера на арчегенте по крону обновляются каждую ночь, лол.

anonymous
()
Ответ на: комментарий от KRoN73

Тот же Perl, например, PHP обогнал его по Tiobe 9 лет назад, в 2009-м.

Как там чемпионат мира в России прошёл? Не обложались? Кто победил?

anonymous
()
Ответ на: комментарий от th3m3

Я тебя немного расстрою, раньше как раз был Питонистом, теперь на Ноду перешёл. А ещё раньше на php-говнокодил.

Меня ты не расстроил, но многое прояснилось)

Всё и так понятно же. Фанатики, они и в Африке фанатики.

И это говорит человек, который в каждой теме про технологию X приходит и пишет: «X не нужно, node js хватит для всего».

Есть два типа людей. Один освоил технологию и написал: «Смотрите, как круто. На ней можно делать вот такие штуки». Второй пришел в другую тему и написал: «X не нужно, вот Y это да... прорыв в отрасли, скоро все будут писать только на нём, а ваше X - говно» и пошел в другую тему, уже про Z. Вторых, как правило, не любят. Угадай почему?)

Я не против ноды. Какую-нибудь небольшую утилитку для разработки я бы на ней может и написал. Для всего остального... брррр... ну её нафиг вашу ноду) пойду лучше возьму «что-нибудь более адекватное и актуальное в отрасли». И да, я не пишу на PHP на основной работе и знаю не только его.

И я бы тебе даже не отвечал, если бы ты был такой один) Вокруг каждой новой технологии всегда вы целыми стаями кучкуетесь уже надоело вас слушать/читать.

nguseff
()
Ответ на: комментарий от KRoN73

Ruby так и не набрал популярность

Руби настолько непопулярный, что куда ни ткни - повсюду клоны рельсов и синатры.

anonymous
()
Ответ на: комментарий от anonymous

Руби настолько непопулярный, что куда ни ткни - повсюду клоны рельсов и синатры.

Именно. Даже его удачные решения клонируют, лишь бы не юзать его самого.

anonymous
()
Ответ на: комментарий от th3m3

После того, как перешёл с php на Python - понял, какой отстой php.
После того

Забавно. Как можно перейти на другой язык, заранее не зная, какой отстой язык текущий? :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Как можно перейти на другой язык, заранее не зная, какой отстой язык текущий?

Отстой познаётся в сравнении. Ну, или перманентно находится в башке, как у тебя.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

ты так толст или ты просто тупой?

Ты бинарный или просто демагог?

рельсы пытаются склонировать для таких маках как ты

Мимо, я вообще не вебщик по основной деятельности.

которые не хотят уходить со своего единственного язычка

Потому что он популярней, чем ребе. О чём и речь.

anonymous
()
Ответ на: комментарий от anonymous

Отстой познаётся в сравнении.

Естественно. Только нормальные люди сравнивают _до_ перехода на другой язык :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

рельсы пытаются склонировать для таких маках как ты

Нет ты. Опытным макакам уходить с рельсов, смеесся? Чтобы говнокодить то же самое на похапэ за доширак? Нет, вася, рельсы клонируют, чтобы взращенные на похапэ даунята не скатывали моментально проекты в говно.

anonymous
()
Ответ на: комментарий от KRoN73

нормальные люди сравнивают _до_ перехода на другой язык

Без написания приложения сравнение неполноценно.

anonymous
()
Ответ на: комментарий от anonymous

Две ребе-илитки нашли друг друга, и сами ещё не осознали своей похожести. Как это мило.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: В тему от anonymous

Интересно, почему там Python и Ruby вообще нет :)

KRoN73 ★★★★★
()
Ответ на: комментарий от no-such-file

Слово «указатель"подразумевает некое поведение. Подобная техника в пыхе не только ни разу не соответствует термины, но еще и проигрывает указателям в выразительности, а также создает потрясающий потенциал для РЕШЕТА.

Pythonist
()
Ответ на: комментарий от Pythonist

подразумевает некое поведение

На вещи надо смотреть ширше.

не только ни разу не соответствует

Синтаксически соответствует.

потенциал для РЕШЕТА

Да да указатели они такие, а уж сколько решета в крестах и си от них. Запретить, срочно!

no-such-file ★★★★★
()
Ответ на: комментарий от th3m3

После того, как перешёл с php на Python - понял, какой отстой php

Проиграл.

no-such-file ★★★★★
()
Ответ на: комментарий от KRoN73

Можно сверлить несущую стену дрелью, а можно взять дрель с режимом перфоратора и понять, какой отстой простая дрель.

Если человек всю жизнь кодит на php - он больше ничего не видит, кроме php. Всё познаётся в сравнении.

th3m3 ★★★★★
()
Ответ на: комментарий от nguseff

И это говорит человек, который в каждой теме про технологию X приходит и пишет: «X не нужно, node js хватит для всего».

Не, не, не. Я тут первый раз потроллить зашёл. В других темах не я писал же =)

Для веба(именно веба, а не всего) сейчас хватит действительно одного js. Конечно, это не значит, что нужно всё бросать и кодить только на js. Но если захотеть, то можно и так.

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

th3m3 ★★★★★
()
Ответ на: В тему от anonymous

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

запрос:
http://example.com/search.php?q=<script>alert('hello');</script>

ответ сервера:

<?php

echo !empty($_GET['q']) ? $_GET['q'] : 'Пустая строка';

Понятное дело что мы получаем алерт
Чтобы избежать выдаем ответ к примеру через htmlspecialchars($_GET['q'], ENT_QUOTES, 'UTF-8'); // на самом деле большенство пользуется хелпером

Но разве это проблема языка?
Или просьба к хейтерам извольте аргументированно обьяснить почему оцтой то? (учитывая более-менее актуальные версии 5.3+)

kiotoze ★★★★
()
Последнее исправление: kiotoze (всего исправлений: 2)
Ответ на: комментарий от th3m3

Другие языки его «обскакали» только в твоих влажных фантазиях.

anonymous
()
Ответ на: комментарий от th3m3

Если человек всю жизнь кодит на php - он больше ничего не видит, кроме php. Всё познаётся в сравнении.

Видишь ли. Если человек «вдруг понимает, что PHP — отстой» только перейдя на другой язык, то это очень красноречиво говорит о самом человеке. Если кто-то этого не понимает, то это, в свою очередь, столь же красноречиво говорит об этом непонимающем :)

Всё познаётся в сравнении.

Да-да. Воткнул пальцы в розетку и понял, какое говно это — розетка и электрический ток :D

KRoN73 ★★★★★
()
Ответ на: комментарий от kiotoze

Но разве это проблема языка?

Нет. Но они этого никогда не поймут :)

просьба к хейтерам извольте аргументированно обьяснить

Хейтеры — на то и хейтеры, чтобы не уметь аргументированно объяснить. Если человек вменяемый, то он просто использует соответствующие инструменты для соответствующих задач. Когда человек начинает ненавидеть инструмент — это диагноз.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.