Сегодня я играл с PHP и обнаружил, что строковые значения «истина» и «ложь» неправильно преобразованы в логические значения в условии, например учитывая следующую функцию:
function isBoolean($value) {
if ($value) {
return true;
} else {
return false;
}
}
Если я выполняю:
isBoolean("true") // Returns true
isBoolean("") // Returns false
isBoolean("false") // Returns true, instead of false
isBoolean("asd") // Returns true, instead of false
Кажется, что она работает только со значениями «1» и «0»:
isBoolean("1") // Returns true
isBoolean("0") // Returns false
Есть ли в PHP встроенная функция для анализа «истина» и «ложь» Помощник
не может быть разрешен, когда я пытаюсь разрешить Службу
. Каков мой лучший вариант?
Вариант 1: Удалить Помощник
из конструктора Service
и явно добавить его в конструктор. Мне не нравится этот вариант, потому что он как бы нарушает парадигму IoC.
Вариант 2: Сделайте Helper
реализацией общедоступного интерфейса IHelper
, а затем добавьте общедоступный модуль в ] ReferencedAssembly
, который регистрирует Helper
как IHelper
. Мне не нравится этот вариант, потому что он требует, чтобы ApplicationAssembly
знал слишком много деталей реализации о Service
, и если пользователь забывает зарегистрировать этот модуль при запуске, все ломается.
Вариант 3: Создайте общедоступный статический конструктор в службе
, который создает второй контейнер IoC специально для ReferencedAssembly
и регистрирует в нем Helper
. Удалите Helper
из конструктора Service
и разрешите его в конструкторе, используя второй контейнер IoC. Это кажется моим лучшим вариантом, но требует большего количества "сантехнического" кода, чем другие. Я также не большой поклонник общедоступных статических конструкторов.
Вариант 4. Полностью изменить мою архитектуру на что-то другое.