Pull to refresh
14
0
Vladimir Reznichenko@kalessil

Пользователь

Send message
По многим причинам Hack/HHVM мы не можем использовать.

Костыли пришлось писать для примитивных типов (статика — необходимое зло в данном случае):

class ..._SimpleTypeHint {
    public static function throwExceptionIfArgumentIsNotString($givenArgument);
    public static function throwExceptionIfArgumentIsNotInteger($givenArgument);
    public static function throwExceptionIfArgumentIsNotFloat($givenArgument);
    public static function throwExceptionIfArgumentIsNotBoolean($givenArgument);
}

class ..._SimpleTypeCasting {
    public static function toInteger($mixedValueToCast);
    public static function toFloat($mixedValueToCast);
    public static function toBoolean($mixedValueToCast);
}


А вот так выглядит худший случай использования:

class SomeClass {
	/** @var int|null $someId */
    public function doSomethingWithEntityId($someId)
    {
        if ($someId !== null) {
            ..._SimpleTypeHint::throwExceptionIfArgumentIsNotInteger($someId);
        }
		
		...
	}
}
Ну тогда вот — небольшой список. То, что выделено (кроме приведения типов) может оказаться багами:
небольшой список
image

Да, так ещё лучше, поправил.
Если кликнуть правой кнопкой по файлам/папке в навигаторе проекта, то в контекстном меню есть опция «Inspect Code...» — можно часть проекта проверить.

В результатах анализа будет секция PHP — это результаты проверки плагина.
Поправил, спасибо за ремарку.
Я честно пытался отшутиться, но у меня в контракте есть ограничения на участие в оперсорсе и выступлениях на конференциях.
«А вы сообщили разработчикам о найденных ошибках?»
Скажем так, не напрямую. Но и забытых вар дампов, странных логических конструкций мы исправили достаточно.
Ну оно же как-то работает) Шутка, Symfony2 хороший продукт, и там трудно найти эпичные ошибки (хотя тот же пример с ChainLoader или конструкторами).

Остальные примеры — это улучшение кода, да. Я просто ещё опустил много мелочи: производительность, возможные баги и прочее.
До ReSharper далековато (спасибо за наводку), но подход тот же.

Information

Rating
Does not participate
Location
Karlsruhe, Baden-Württemberg, Германия
Date of birth
Registered
Activity