1.1, Повидло19 (?), 12:13, 02/07/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
> В качестве выходных ворот, требующих отслеживания экранирования, проверяются операции, приводящие к выводу в формате HTML, добавлению HTTP-заголовков или формированию SQL-запросов.
Чо?
| |
|
2.19, jfdbngh (?), 13:49, 02/07/2020 [^] [^^] [^^^] [ответить]
| –4 +/– |
Исправлены ошибки (и добавлены новые)
Повышена производительности (при условии использования более производительного железа)
| |
|
3.29, Аноним (29), 19:17, 02/07/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Исправлены ошибки (и добавлены новые)
> Повышена производительности (при условии использования более производительного железа)
А у кого не так?
| |
|
|
|
2.4, cancelled (?), 12:21, 02/07/2020 [^] [^^] [^^^] [ответить]
| +5 +/– |
Когда разрабатывали язык - забыли учесть твое мнение, исправят в php 9.0, за одно сломают нафиг всю обратную совместимость.
| |
|
3.16, тоже Аноним (ok), 13:29, 02/07/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Обратную совместимость, превращающую variable в 'variable', стоит сломать вместе с руками тех, кто на нее полагается.
| |
|
4.37, Аноним (37), 00:04, 03/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Именно это и собираются сделать:
$ php -r '$a = a;'
PHP Warning: Use of undefined constant a - assumed 'a' (this will throw an Error in a future version of PHP) in Command line code on line 1
| |
|
5.38, тоже Аноним (ok), 00:16, 03/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
> PHP Warning: Use of undefined constant a - assumed 'a' (this will throw an Error in a future version of PHP) in Command line code on line 1
/opt/php5.3/bin/php -r 'error_reporting(E_ALL); $a = a;'
PHP Notice: Use of undefined constant a - assumed 'a' in Command line code on line 1
Собственно, в 7.2 добавили только предупреждение о будущей ошибке. За столько-то лет и версий.
| |
|
6.42, Аноним (42), 02:10, 03/07/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
Те, кто пишет нормальный код, заворачивают все ошибки (да, даже Notice) в исключения, а Notice там был даже в 5.0.
А тонны древнего кода времен php3 до сих пор работают, и чтобы там все переписать, нужно время. Повторять историю python3, на который не могли перейти годами (да и сейчас еще не все перешли), желания у них нет, и это совершенно понятно.
| |
|
|
|
|
2.6, Dragomeat (?), 12:28, 02/07/2020 [^] [^^] [^^^] [ответить]
| +3 +/– |
Так а что не так то? Это часть дизайна языка, как и "::" для доступа к статическим методам и константам класса, "->" для доступа к обычным методам и полям, "." для конкатенации и т.д
| |
|
3.26, funny.falcon (?), 18:43, 02/07/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
А какая разница, на чём lint писать? Лишь бы автору удобно было.
Семейство ML языков (SML, Ocaml, Haskel) является потомком ML, первая реализация которого была написана на LISP. LISP, как известно, динамически типизируемый язык.
Вопрос же не в языке (если не считать экзотику), а в опыте и криворукости того, кто на нём пишет.
| |
|
4.28, Ilya Indigo (ok), 19:14, 02/07/2020 [^] [^^] [^^^] [ответить]
| –9 +/– |
> А какая разница, на чём lint писать? Лишь бы автору удобно было.
1 Динамическому скриптовому языку заточенному под WEB-приложения lint нужен как козе баян!
2 Писать на PHP что-то кроме WEB-приложений - глупость и невежество!
| |
|
|
2.12, Аноним (12), 12:52, 02/07/2020 [^] [^^] [^^^] [ответить]
| +5 +/– |
Sigil (в данном случае $) очень полезен тем, что даёт возможность отличать переменные от остальных слов, создаёт им отдельное пространство имён. Не приходисят извращаться с именами переменных, которые, внезапно, по смыслу совпадают с какими-либо keywords.
| |
|
3.31, Вы забыли заполнить поле Name (?), 23:19, 02/07/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
> которые, внезапно, по смыслу совпадают с какими-либо keywords
Не выдумывайте. Как часто это происходит? Не надо вводить много ключевых слов в язык. На вскидку приходит какой-нибудь class и function и как часто они нужны в прикладном коде? Ну коль так уж нужны добавьте _ в конец или начало.
| |
|
2.14, Аноним (14), 13:09, 02/07/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
Страшное наследие из Perl, который разрабатывали напрочь упоротые лингвисты.
| |
2.27, Ilya Indigo (ok), 19:09, 02/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
>>if ($a && !$a) {}
> жесть. зачем вообще $ в имени переменной?
Наследие из прошлого, которое отличало переменные от констант, которое не хотят убирать из-за обратной совместимости.
| |
|
3.33, Аноним (37), 23:52, 02/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Его не получится убрать.
Сейчас можно одновременно иметь класс или функцию foo и переменную foo.
Как отличать, если убрать доллар?
| |
|
4.40, Ilya Indigo (ok), 01:30, 03/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Его не получится убрать.
> Сейчас можно одновременно иметь класс или функцию foo и переменную foo.
> Как отличать, если убрать доллар?
А ещё можно одновременно иметь константу foo.
Как сабж отличает константу foo от ф-ии или класса?
| |
|
5.43, Аноним (42), 02:15, 03/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Никак не отличает, будет конфликт имен. Но так было с самого начала, потому проблемы и нет.
С константами и классами на самом деле проблема не то чтобы и проблема - классы называют CamelCase-ом, константы UPPER_CASE-ом, а переменные обычно начинаются с lowercase. Тут конфликты вылезут только у тех, кто игнорирует PSR.
А вот с функциями (и языковыми конструкциями, выглядящими как функции) конфликты вылезут моментально: достаточно одной count, переменная $count найдется в примерно каждой сколь-либо объемной программе.
| |
|
6.55, Аноним (55), 15:35, 03/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Там хитрость ещё в том, что в php вполне возможны такие конструкции как $variable($args), вызов функции/метода по колбеку в $variable. Язык слабо типизирован, и функциональный вид переменной заранее не объявляется. Поэтому если $ убрать, различия между функциями и переменными сотрутся, и будет вообще бардак.
| |
|
7.65, Аноним (65), 21:56, 07/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
В том же JS это никому не мешает. Если в переменной лежит не функция, будет ошибка вызова. Тем более, в PHP есть неймспейсы.
| |
|
6.58, Ilya Indigo (ok), 16:32, 03/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
<?php
const foo = 'Константа';
function foo()
{
return 'Функция';
}
abstract class foo
{
public const bar = 'Свойство';
public static function bar()
{
return 'Метод';
}
}
?><p><?=foo?></p>
<p><?=foo()?></p>
<p><?=foo::bar?></p>
<p><?=foo::bar()?></p>
Константа
Функция
Свойство
Метод
Никаких ошибок и предупреждений!
PHP прекрасно отличает константу от ф-ии и класса не путая их.
Точно также он смог бы от них отличать переменные без $.
> А вот с функциями (и языковыми конструкциями, выглядящими как функции) конфликты вылезут моментально:
Зарезервированные слова не доступные для переменных никто не отменял.
В с++ я переменную int long или string тоже назвать не могу... но там есть типы...
$ как я понимаю, играет ещё роль ключевого слова, аля var или let.
| |
|
7.67, Аноним (37), 12:43, 08/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Конечно. Это потому что нельзя сделать
const foo = 'strlen';
$s = 'foo';
echo foo($s);
или
const foo = '\stdClass';
$o = new foo();
var_dump($o);
А с переменными так можно:
$foo = 'strlen';
$s = 'foo';
echo foo($s);
или
const foo = '\stdClass';
$o = new $foo();
var_dump($o);
Если убрать $, то вся эта динамика (из которой примерно целиком состоит тот же вордпресс, например), поломается.
| |
|
|
|
|
|
2.61, Murz (ok), 18:23, 05/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Да, действительно что за дискриминация? Наверно пендостан проплатил, срочно заменить на ₽!
| |
2.66, Аноним (66), 10:51, 08/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
потому что PHP изначально создавался как шаблонизатор и переменные можно было выводить внутри строк.
почувствуйте, что называется, разницу.
print "hello $some_var";
и
print "hello some_var";
но все уже забыли это и пишут шаблонизаторы на шаблонизаторе, чтобы использовать шаблонизаторы пока работает шаблонизатор.
| |
|
1.7, A.Stahl (ok), 12:32, 02/07/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Psalm 3.12 от Шталя:
Да изыдет пусть непотребство неявно типизированное
Ибо явным должно быть то, что важно
И кто делает иначе, тот не прав и осуждаем должен быть
Also sprach Stahl
| |
1.8, Ilya Indigo (ok), 12:37, 02/07/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –4 +/– |
> Включение JIT-компилятора, применение которого позволит повысить производительность...
... абсолютно не типичных задач для web-программирования, например рендеринг видео.
Производительность типичных задач будет неизменна, и потребление оперативы, как при всяком JIT возрастёт.
P.S. Короче теперь неосиляторы С++ смогут писать скр... программы не только на питоне и руби, но и на пыхе...
Хотя если честно, в таких проектах, как youtube-dl где все простои возникают при ожидании сети и загрузки, а сама задача сводится к вызову сторонних утилит, скачиванию и парсингу, bash/perl/python/ruby/php более лучшее решение чем C/C++.
| |
|
2.13, Аноним (12), 12:56, 02/07/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
А что, скорость только для рендеренга видео нужна? Вообще, высокая скорость работы никогда не мешает, а в качестве примера могу привести комбинаторные алгоритмы, которые порой требуются в бизнесс-логике. На моих тестах, производительность между интерпретатором и тем же алгоритмом, сделанным на Си -- в 200 раз.
| |
2.34, Аноним (37), 23:53, 02/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Нет. С современным кодом, использующим strict_types=1, прирост производительности заметен невооруженным глазом.
| |
|
|
|
3.21, Аноним (15), 14:08, 02/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Я дико извиняюсь, но не могли бы вы ткнуть пальцем где на этой ссылке написан ответ на МОЙ вопрос?
| |
|
4.22, Gemorroj (ok), 14:29, 02/07/2020 [^] [^^] [^^^] [ответить]
| –6 +/– |
2 строчка "Psalm Requires PHP >= 7.1". На русский переводить, надеюсь, не нужно?
| |
|
5.24, Аноним (15), 14:48, 02/07/2020 [^] [^^] [^^^] [ответить]
| +3 +/– |
Это я так понимаю версия PHP необходимая для запуска этого анализатора. Но я спрашивал не об этом.
Я спрашивал не о том на какой версии php работает этот анализатор, а какие версии php он понимает... какие версии он умеет анализировать...
Вы же понимаете что "Requires PHP" это совмем не тоже самое что "understands PHP" если вам на английском проще...
| |
|
|
|
2.36, Аноним (37), 00:01, 03/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Оно работает на nikic/PHP-Parser [1].
Соответствено, поддерживает те версии, которые поддерживает этот парсер:
> This is a PHP 5.2 to PHP 7.4 parser written in PHP. Its purpose is to simplify static code analysis and manipulation.
[1] https://github.com/nikic/php-parser
| |
|
1.18, Аноним (18), 13:44, 02/07/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Статический анализатор и статистический анализатор -- это не одно и тоже.
В теле статьи описан статический анализатор, есличо
| |
1.30, онанимуз (?), 22:38, 02/07/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> Включение JIT-компилятора, применение которого позволит повысить производительность.
и тогда пых станет быстрее педона не только в синтетических тестах, но и в реальных задачах. нужно, годно, ждём!
| |
|
2.35, Аноним (37), 23:57, 02/07/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
Надо заметить, что оно уже стало похоже на нормальный язык. Все оставшиеся кривости обусловлены обратной совместимостью.
Другое дело, что никто в здравом уме сейчас не будет выбирать PHP для нового проекта - разве что есть наработки с похожего проекта, которые доработать напильником на порядок быстрее, чем писать что-то новое
| |
|
|
4.44, Аноним (42), 02:19, 03/07/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
Смотря что такое "не умеет".
mb_ функции есть, модификатор /u у регулярок есть.
Пхпшная строка - это, по сути, byte[]. Нативный тип было бы иметь неплохо, но на практике никаких особенных неудобств нет. Можно написать класс UnicodeString и обернуть все в него, но так никто не делает, потому что привыкли уже.
| |
|
|
|
|
4.62, с (?), 02:22, 06/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Научись воспринимать критику или возвращайся в дедсад
да с удовольствием бы вернулся, но походу место уже занято тобой, впрочем уровень критики соответсвует скорее спецпансионату для альтернативно одаренных
| |
|
5.63, Вы забыли заполнить поле Name (?), 10:15, 06/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
>> Научись воспринимать критику или возвращайся в дедсад
> да с удовольствием бы вернулся, но походу место уже занято тобой, впрочем
> уровень критики соответсвует скорее спецпансионату для альтернативно одаренных
Cтрелки не переводи. Вместо кукареканья а-ля добейся, учись предлагать.
| |
|
6.64, с (?), 13:43, 07/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Научись воспринимать критику или возвращайся в дедсад
> Cтрелки не переводи. Вместо кукареканья а-ля добейся, учись предлагать.
Сам сказал, сам ответил. Чудный скунс, почти как человек
| |
|
7.69, Вы забыли заполнить поле Name (?), 12:41, 30/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
>> Научись воспринимать критику или возвращайся в дедсад
>> Cтрелки не переводи. Вместо кукареканья а-ля добейся, учись предлагать.
> Сам сказал, сам ответил. Чудный скунс, почти как человек
По себе не судят.
| |
|
|
|
|
|
2.49, Me (??), 08:43, 03/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Внезапно, для нормальных языков тоже есть статические анализаторы. И они действительно помогают.
| |
|
|
2.46, с (?), 07:22, 03/07/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Кто?.. А, эта та жирнота, а она еще не сдохла?
| |
2.60, SubGun (??), 08:37, 04/07/2020 [^] [^^] [^^^] [ответить]
| +/– |
Пытается, но нода - та еще помойка. Она сдохнет быстрее, чем php. Появятся правда аналоги, уж больно всем js нравится.
| |
|
|