Your IP : 127.0.0.1
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Stdlib;
/**
* Utility methods for the boolean data type
*
* @api
* @since 100.0.2
*/
class BooleanUtils
{
/**
* Expressions that mean boolean TRUE
*
* @var array
*/
private $trueValues;
/**
* Expressions that mean boolean FALSE
*
* @var array
*/
private $falseValues;
/**
* @param array $trueValues
* @param array $falseValues
* @codingStandardsIgnoreStart
*/
public function __construct(
array $trueValues = [true, 1, 'true', '1'],
array $falseValues = [false, 0, 'false', '0']
) {
$this->trueValues = $trueValues;
$this->falseValues = $falseValues;
}
// @codingStandardsIgnoreEnd
/**
* Retrieve boolean value for an expression
*
* @param mixed $value Boolean expression
* @return bool
* @throws \InvalidArgumentException
*/
public function toBoolean($value)
{
/**
* Built-in function filter_var() is not used, because such values as on/off are irrelevant in some contexts
* @link http://www.php.net/manual/en/filter.filters.validate.php
*/
if (in_array($value, $this->trueValues, true)) {
return true;
}
if (in_array($value, $this->falseValues, true)) {
return false;
}
$allowedValues = array_merge($this->trueValues, $this->falseValues);
throw new \InvalidArgumentException(
'Boolean value is expected, supported values: ' . var_export($allowedValues, true)
);
}
/**
* Try to convert $value to boolean else return non processed $value
*
* @param mixed $value
* @return mixed
* @since 101.0.0
*/
public function convert($value)
{
if (in_array($value, $this->trueValues, true)) {
return true;
} elseif (in_array($value, $this->falseValues, true)) {
return false;
} else {
return $value;
}
}
}