The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Psalm 3.12, статистического анализитора для языка PHP. Альфа выпуск PHP 8.0, opennews (?), 02-Июл-20, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


3. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –12 +/
Сообщение от MPEG LA (ok), 02-Июл-20, 12:17 
>if ($a && !$a) {}

жесть. зачем вообще $ в имени переменной?

Ответить | Правка | Наверх | Cообщить модератору

4. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +5 +/
Сообщение от cancelled (?), 02-Июл-20, 12:21 
Когда разрабатывали язык - забыли учесть твое мнение, исправят в php 9.0, за одно сломают нафиг всю обратную совместимость.
Ответить | Правка | Наверх | Cообщить модератору

16. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +1 +/
Сообщение от тоже Анонимemail (ok), 02-Июл-20, 13:29 
Обратную совместимость, превращающую variable в 'variable', стоит сломать вместе с руками тех, кто на нее полагается.
Ответить | Правка | Наверх | Cообщить модератору

37. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от Аноним (37), 03-Июл-20, 00:04 
Именно это и собираются сделать:

$ 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

Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от тоже Аноним (ok), 03-Июл-20, 00:16 
> 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 добавили только предупреждение о будущей ошибке. За столько-то лет и версий.

Ответить | Правка | Наверх | Cообщить модератору

42. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +2 +/
Сообщение от Аноним (42), 03-Июл-20, 02:10 
Те, кто пишет нормальный код, заворачивают все ошибки (да, даже Notice) в исключения, а Notice там был даже в 5.0.

А тонны древнего кода времен php3 до сих пор работают, и чтобы там все переписать, нужно время. Повторять историю  python3, на который не могли перейти годами (да и сейчас еще не все перешли), желания у них нет, и это совершенно понятно.

Ответить | Правка | Наверх | Cообщить модератору

5. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +2 +/
Сообщение от Работа за еду на PHP (?), 02-Июл-20, 12:23 
Ради денег на еду
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

6. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +3 +/
Сообщение от Dragomeatemail (?), 02-Июл-20, 12:28 
Так а что не так то? Это часть дизайна языка, как и "::" для доступа к статическим методам и константам класса, "->" для доступа к обычным методам и полям, "." для конкатенации и т.д
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

9. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Ilya Indigo (ok), 02-Июл-20, 12:39 
А Вас не смутило наличие lint в динамическом языке, написанной на нём же?
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

26. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +1 +/
Сообщение от funny.falcon (?), 02-Июл-20, 18:43 
А какая разница, на чём lint писать? Лишь бы автору удобно было.
Семейство ML языков (SML, Ocaml, Haskel) является потомком ML, первая реализация которого была написана на LISP. LISP, как известно, динамически типизируемый язык.
Вопрос же не в языке (если не считать экзотику), а в опыте и криворукости того, кто на нём пишет.
Ответить | Правка | Наверх | Cообщить модератору

28. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –9 +/
Сообщение от Ilya Indigo (ok), 02-Июл-20, 19:14 
> А какая разница, на чём lint писать? Лишь бы автору удобно было.

1 Динамическому скриптовому языку заточенному под WEB-приложения lint нужен как козе баян!
2 Писать на PHP что-то кроме WEB-приложений - глупость и невежество!

Ответить | Правка | Наверх | Cообщить модератору

12. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +5 +/
Сообщение от Аноним (12), 02-Июл-20, 12:52 
Sigil (в данном случае $) очень полезен тем, что даёт возможность отличать переменные от остальных слов, создаёт им отдельное пространство имён. Не приходисят извращаться с именами переменных, которые, внезапно, по смыслу совпадают с какими-либо keywords.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

31. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –2 +/
Сообщение от Вы забыли заполнить поле Name (?), 02-Июл-20, 23:19 
> которые, внезапно, по смыслу совпадают с какими-либо keywords

Не выдумывайте. Как часто это происходит? Не надо вводить много ключевых слов в язык. На вскидку приходит какой-нибудь class и function и как часто они нужны в прикладном коде? Ну коль так уж нужны добавьте _ в конец или начало.

Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –2 +/
Сообщение от Аноним (14), 02-Июл-20, 13:09 
Страшное наследие из Perl, который разрабатывали напрочь упоротые лингвисты.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

23. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +2 +/
Сообщение от Anonim (??), 02-Июл-20, 14:43 
Там jQuery в ядре.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

27. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Ilya Indigo (ok), 02-Июл-20, 19:09 
>>if ($a && !$a) {}
> жесть. зачем вообще $ в имени переменной?

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

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

33. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от Аноним (37), 02-Июл-20, 23:52 
Его не получится убрать.
Сейчас можно одновременно иметь класс или функцию foo и переменную foo.
Как отличать, если убрать доллар?
Ответить | Правка | Наверх | Cообщить модератору

40. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Ilya Indigo (ok), 03-Июл-20, 01:30 
> Его не получится убрать.
> Сейчас можно одновременно иметь класс или функцию foo и переменную foo.
> Как отличать, если убрать доллар?

А ещё можно одновременно иметь константу foo.
Как сабж отличает константу foo от ф-ии или класса?

Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Аноним (42), 03-Июл-20, 02:15 
Никак не отличает, будет конфликт имен. Но так было с самого начала, потому проблемы и нет.

С константами и классами на самом деле проблема не то чтобы и проблема - классы называют CamelCase-ом, константы UPPER_CASE-ом, а переменные обычно начинаются с lowercase. Тут конфликты вылезут только у тех, кто игнорирует PSR.

А вот с функциями (и языковыми конструкциями, выглядящими как функции) конфликты вылезут моментально: достаточно одной count, переменная $count найдется в примерно каждой сколь-либо объемной программе.

Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Аноним (55), 03-Июл-20, 15:35 
Там хитрость ещё в том, что в php вполне возможны такие конструкции как $variable($args), вызов функции/метода по колбеку в $variable. Язык слабо типизирован, и функциональный вид переменной заранее не объявляется. Поэтому если $ убрать, различия между функциями и переменными сотрутся, и будет вообще бардак.
Ответить | Правка | Наверх | Cообщить модератору

65. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от Аноним (65), 07-Июл-20, 21:56 
В том же JS это никому не мешает. Если в переменной лежит не функция, будет ошибка вызова. Тем более, в PHP есть неймспейсы.
Ответить | Правка | Наверх | Cообщить модератору

58. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Ilya Indigo (ok), 03-Июл-20, 16:32 
<?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.

Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

67. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от Аноним (37), 08-Июл-20, 12:43 
Конечно. Это потому что нельзя сделать

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);


Если убрать $, то вся эта динамика (из которой примерно целиком состоит тот же вордпресс, например), поломается.

Ответить | Правка | Наверх | Cообщить модератору

68. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от Аноним (37), 08-Июл-20, 12:44 
в последнем должно быть $foo = '\stdClass' конечно
Ответить | Правка | Наверх | Cообщить модератору

59. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +1 +/
Сообщение от SubGun (??), 04-Июл-20, 08:32 
Чтобы не превращать язык в помойку, вроде питона.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

61. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  –1 +/
Сообщение от Murz (ok), 05-Июл-20, 18:23 
Да, действительно что за дискриминация? Наверно пендостан проплатил, срочно заменить на ₽!
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

66. "Выпуск Psalm 3.12, статистического анализитора для языка PHP..."  +/
Сообщение от Аноним (66), 08-Июл-20, 10:51 
потому что PHP изначально создавался как шаблонизатор и переменные можно было выводить внутри строк.
почувствуйте, что называется, разницу.

print "hello $some_var";

и

print "hello some_var";

но все уже забыли это и пишут шаблонизаторы на шаблонизаторе, чтобы использовать шаблонизаторы пока работает шаблонизатор.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру