[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP 7
Страницы: 1, 2, 3, 4, 5
chee
Слишком много мусора сахара они добавляют, превращают язык в какое-то дерьмо. Конечно же области видимости для констант это хорошо, как и перехват нескольких исключений.

Но вот это
Цитата
Поддержка строковых параметров в функции list() и новый синтаксис c []

мне не нравится, это свистелки и перделки для умственоларавелнутых


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
killer8080
Цитата (chee @ 3.06.2016 - 23:55)
Конечно же области видимости для констант это хорошо

Чем хорошо? Какой профит от этого?
Invis1ble
Цитата (chee @ 3.06.2016 - 23:55)
превращают язык в какое-то дерьмо

Цитата (chee @ 3.06.2016 - 23:55)
мне не нравится, это свистелки и перделки для умственоларавелнутых

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


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
Цитата (killer8080 @ 3.06.2016 - 23:58)
Какой профит от этого?

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

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
class TheBestRandomGeneratorEver implements RandomGeneratorInterface
{
private const RANDOM_NUMBER = 42;

public function getRandomNumber() : int {
return self::RANDOM_NUMBER;
}
}


:)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
Кстати, заметили, как всё движется в сторону развития ООП?
Представляете, какой бугурт у twin'а? biggrin.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Zzepish
Invis1ble
Я думаю, что twin'у пофигу.
Invis1ble
Цитата (Zzepish @ 4.06.2016 - 00:41)
Invis1ble
Я думаю, что twin'у пофигу.

А я думаю, что нет. 1:1
Ждём твина для получения ОБЪЕКТивных и независимых данных laugh.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

killer8080
Цитата (Invis1ble @ 4.06.2016 - 00:07)
например есть класс, в котором есть некая константа, которая не нужна для внешнего кода
делаем её приватной и юзаем внутри
раньше всё это было на уровне соглашений, теперь на уровне языка

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

А вот сахар к list() прикольная фича smile.gif
chee
Цитата (Invis1ble @ 4.06.2016 - 00:02)
ну этими свистоперделками же не заставляет тебя никто пользоваться

но это не спасет меня от поддержки подобного кода. Но благо, что 7 версия еще не скоро войдет в массы, по объектным причинам.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
Цитата (killer8080 @ 4.06.2016 - 00:58)
Может смысл все таки какой то есть, просто для меня он не очевиден?

Ну я пока что тоже ничего, кроме автодополнения исходя из контекста, не вижу.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

chee
Цитата (killer8080 @ 4.06.2016 - 00:58)
В случае с константами это сокрытие, ради сокрытия

Именно, и это очень важно, если у чего-то область видимости protected или private, то при чтении кода, можно сделать вывод что переменная напрямую используется только внутри класса и его потомков (в случае protected). Если же область видимости будет public, то невозможно сделать такое допущение при чтении, невозможно точно определить, для внешнего пользование это или нет.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
Вот что нашёл:

Цитата (https://wiki.php.net/rfc/class_const_visibility)
Classes in PHP allow modifiers on properties and methods, but not constants. It is an easily fixed inconsistency, and a feature that many want and most surprised that it doesn't already exist. Stack Overflow Thread

In a thread on php-internals a couple real world examples were offered.
  • Defining bitmasks/magic numbers, but not exposing them globally. Before constants would be exposed allowing callers to depend on them.
  • Help make it more clear what is important, exposing harmless constants clutters documentation needlessly.
killer8080
Цитата (chee @ 4.06.2016 - 01:03)
Именно, и это очень важно, если у чего-то область видимости protected или private, то при чтении кода, можно сделать вывод что переменная напрямую используется только внутри класса и его потомков (в случае protected). Если же область видимости будет public, то невозможно сделать такое допущение при чтении, невозможно точно определить, для внешнего пользование это или нет.

Согласен, это удобно для анализа кода.
Хм кажется я понял, приватные константы это страховка логики внешнего кода, а не внутреннего. Чтобы пользователи класса не юзали её как интерфейс. rolleyes.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.