Phalcon\Config\Adapter\Ini
внутренне использует PHP parse_ini_file
.Phalcon по умолчанию передает значение INI_SCANNER_RAW
в качестве третьего аргумента (т. Е. Режим сканера).В любом случае Phalcon всегда преобразует значения, используя собственный внутренний метод _cast
.
. Вы можете расширить Phalcon\Config\Adapter\Ini
и переопределить метод _cast
, чтобы получить желаемый эффект:
<?php
class RawIntConfig extends \Phalcon\Config\Adapter\Ini
{
protected function _cast($val)
{
/* If the value is numeric, we conserve it as is (ie a string).
Otherwise we cast it normally. */
if ( is_numeric($val) )
return $val;
return parent::_cast($val);
}
}
/*
Let's do a couple of tests.
*/
/* INI_SCANNER_RAW has no effect with Phalcon because of _cast(..).
Note that INI_SCANNER_RAW is the default mode anyway. */
$config = new \Phalcon\Config\Adapter\Ini('config.ini', INI_SCANNER_RAW);
echo 'Using \Phalcon\Config\Adapter\Ini:<br>';
var_dump($config);
/* Expected behaviour when using parse_ini_file directly. */
$config = parse_ini_file('config.ini', true, INI_SCANNER_RAW);
echo 'Using parse_ini_file with INI_SCANNER_RAW:<br>';
var_dump($config);
/* Expected behaviour and is usable with Phalcon. */
$config = new RawIntConfig('config.ini');
echo 'Using RawIntConfig:<br>';
var_dump($config);
Вы получаете что-то вроде этого:
![Test script output result](https://i.stack.imgur.com/sMN9M.png)