На практике можно использовать например такое решение:
1) Группировка констант в один класс
2) Switch-блок в принимающих методах (он и без того очень часто используется в методах подобного типа) с исключением в блоке default (неизвестный тип)
Если же хочется полноценного контроля типа, то первое, что приходит на ум (но все равно все это костыли):
<?php
abstract class Color
{
protected $value;
public function getValue()
{
return $this->value;
}
}
final class Color_Red extends Color
{
protected $value = 'f00';
}
.....
....function setColor(Color $color)
То есть возможность строгой типизации — это либо внедрение этапа компиляции (на котором компилятор сразу должен знать все про все модули), либо хранение в памяти типа данных и его проверка в рантайме (при каждом чихе) — то есть в большинстве случаев неприемлемый оверхед.
Беру бред назад, хотя если бы считал это бредом, не писал бы комментарий, думал что это очевидно…
>> Более того, кто мешает сделать перед продакшном что-то типа:
preg_replace( '/[\(,]\s+(string|integer|float|resource)/i', '', $file ); по всем файлам?
Ну это сильно зависит от модели обновления кода на сервере, да и весомая часть полезности теряется.
Более того, без встроенной в язык типизации переменных и возвращаемых значений вряд ли можно надеяться на достаточную формализацию кода.
Еще можно залезть в исходники PHP и пропатчить все там, но это будет совсем другой язык.
Но все равно есть ограничение, которое обойти не удастся. Как правило, строгая типизация требует отдельного процесса - компиляции. В динамических же языках типа PHP все происходит в рантайме. Например, в C++ в рантайме нет типов как таковых - энное количество байт в памяти может быть чем угодно - целым, float, строкой, объектом какого-то типа, пользовательским псевдотипом... За типами следит компилятор, которого в динамических языках нет (как такового). Так что приемлемой "красивости" все равно достичь не удастся.
Web 2.0:
Текст с картинки (нам нужно знать что вы не робот): zx2ch3 _____________
Web 3.0:
Текст с картинки (нам нужно знать что вы не робот): zx2ch3 _____________
Текст с картинки (нам нужно знать что вы не индус): йЦгщУф _____________
При количестве комментариев больше 200 при добавлении комментария начинаются появляться тормоза.
Слабо сделать асинхронную отдачу только тех комментариев, которых нет на странице (и запарсить куда нужно), а не рендерить все дерево? Были мысли по этому поводу?
И почему внутри топика не показывается количество комментариев? Вроде бы отдать дополнительный параметр в асинхроне проблем не составляет, и подсчет комментов, привязанных к топику — задача абсолютно и незатратная?
:)
На практике можно использовать например такое решение:
1) Группировка констант в один класс
2) Switch-блок в принимающих методах (он и без того очень часто используется в методах подобного типа) с исключением в блоке default (неизвестный тип)
Если же хочется полноценного контроля типа, то первое, что приходит на ум (но все равно все это костыли):
>> Более того, кто мешает сделать перед продакшном что-то типа:
preg_replace( '/[\(,]\s+(string|integer|float|resource)/i', '', $file );
по всем файлам? Ну это сильно зависит от модели обновления кода на сервере, да и весомая часть полезности теряется. Более того, без встроенной в язык типизации переменных и возвращаемых значений вряд ли можно надеяться на достаточную формализацию кода. Еще можно залезть в исходники PHP и пропатчить все там, но это будет совсем другой язык. Но все равно есть ограничение, которое обойти не удастся. Как правило, строгая типизация требует отдельного процесса - компиляции. В динамических же языках типа PHP все происходит в рантайме. Например, в C++ в рантайме нет типов как таковых - энное количество байт в памяти может быть чем угодно - целым, float, строкой, объектом какого-то типа, пользовательским псевдотипом... За типами следит компилятор, которого в динамических языках нет (как такового). Так что приемлемой "красивости" все равно достичь не удастся.
Подождем, пока ФППП пообещает квартиру в центре москвы :)
Я сам сторонник максимальной типизации, но не вижу здесь ничего полезного.
В маленьких проектах это бесполезно, а в больших получим неприемлемый оверхед на какую-то сомнительную фичу.
Это если не считать переподготовки специалистов — нельзя вот так сразу начать фигачить строго типизированный код, здесь образ мышления менять надо…
Текст с картинки (нам нужно знать что вы не робот): zx2ch3 _____________
Web 3.0:
Текст с картинки (нам нужно знать что вы не робот): zx2ch3 _____________
Текст с картинки (нам нужно знать что вы не индус): йЦгщУф _____________
))
В общем, успехов.
А насчет количества комментов в топиках?
Слабо сделать асинхронную отдачу только тех комментариев, которых нет на странице (и запарсить куда нужно), а не рендерить все дерево? Были мысли по этому поводу?
И почему внутри топика не показывается количество комментариев? Вроде бы отдать дополнительный параметр в асинхроне проблем не составляет, и подсчет комментов, привязанных к топику — задача абсолютно и незатратная?
Что такого дает Apache, ради чего стоит отказываться от FastCGI?
:)