Skip to content

Class Phalcon\Config

Source on GitHub

| Namespace | Phalcon | | Uses | Phalcon\Collection, Phalcon\Config\ConfigInterface, Phalcon\Config\Exception | | Extends | Collection | | Implements | ConfigInterface |

Phalcon\Config is designed to simplify the access to, and the use of, configuration data within applications. It provides a nested object property based user interface for accessing this configuration data within application code.

$config = new \Phalcon\Config(
    [
        "database" => [
            "adapter"  => "Mysql",
            "host"     => "localhost",
            "username" => "scott",
            "password" => "cheetah",
            "dbname"   => "test_db",
        ],
        "phalcon" => [
            "controllersDir" => "../app/controllers/",
            "modelsDir"      => "../app/models/",
            "viewsDir"       => "../app/views/",
        ],
    ]
);

Constants

const DEFAULT_PATH_DELIMITER = .;

Properties

/**
 * @var string
 */
protected pathDelimiter;

Methods

public function getPathDelimiter(): string;
Gets the default path delimiter

public function merge( mixed $toMerge ): ConfigInterface;
Merges a configuration into the current one

$appConfig = new \Phalcon\Config(
    [
        "database" => [
            "host" => "localhost",
        ],
    ]
);

$globalConfig->merge($appConfig);

public function path( string $path, mixed $defaultValue = null, mixed $delimiter = null ): mixed | null;
Returns a value from current config using a dot separated path.

echo $config->path("unknown.path", "default", ".");

public function setPathDelimiter( string $delimiter = null ): ConfigInterface;
Sets the default path delimiter

public function toArray(): array;
Converts recursively the object to an array

print_r(
    $config->toArray()
);

final protected function internalMerge( array $source, array $target ): array;
Performs a merge recursively

protected function setData( mixed $element, mixed $value ): void;
Sets the collection data

Class Phalcon\Config\Adapter\Grouped

Source on GitHub

| Namespace | Phalcon\Config\Adapter | | Uses | Phalcon\Config, Phalcon\Config\ConfigFactory, Phalcon\Config\ConfigInterface, Phalcon\Config\Exception, Phalcon\Factory\Exception | | Extends | Config |

Reads multiple files (or arrays) and merges them all together.

See Phalcon\Config\Factory::load To load Config Adapter class using 'adapter' option.

use Phalcon\Config\Adapter\Grouped;

$config = new Grouped(
    [
        "path/to/config.php",
        "path/to/config.dist.php",
    ]
);
use Phalcon\Config\Adapter\Grouped;

$config = new Grouped(
    [
        "path/to/config.json",
        "path/to/config.dist.json",
    ],
    "json"
);
use Phalcon\Config\Adapter\Grouped;

$config = new Grouped(
    [
        [
            "filePath" => "path/to/config.php",
            "adapter"  => "php",
        ],
        [
            "filePath" => "path/to/config.json",
            "adapter"  => "json",
        ],
        [
            "adapter"  => "array",
            "config"   => [
                "property" => "value",
            ],
        ],
    ],
);

Methods

public function __construct( array $arrayConfig, string $defaultAdapter = string );
Phalcon\Config\Adapter\Grouped constructor

Class Phalcon\Config\Adapter\Ini

Source on GitHub

| Namespace | Phalcon\Config\Adapter | | Uses | Phalcon\Config, Phalcon\Config\Exception | | Extends | Config |

Reads ini files and converts them to Phalcon\Config objects.

Given the next configuration file:

[database]
adapter = Mysql
host = localhost
username = scott
password = cheetah
dbname = test_db

[phalcon]
controllersDir = "../app/controllers/"
modelsDir = "../app/models/"
viewsDir = "../app/views/"

You can read it as follows:

use Phalcon\Config\Adapter\Ini;

$config = new Ini("path/config.ini");

echo $config->phalcon->controllersDir;
echo $config->database->username;

PHP constants may also be parsed in the ini file, so if you define a constant as an ini value before calling the constructor, the constant's value will be integrated into the results. To use it this way you must specify the optional second parameter as INI_SCANNER_NORMAL when calling the constructor:

$config = new \Phalcon\Config\Adapter\Ini(
    "path/config-with-constants.ini",
    INI_SCANNER_NORMAL
);

Methods

public function __construct( string $filePath, mixed $mode = null );
Ini constructor.

protected function cast( mixed $ini ): bool | null | double | int | string;
We have to cast values manually because parse_ini_file() has a poor implementation.

protected function parseIniString( string $path, mixed $value ): array;
Build multidimensional array from string

Class Phalcon\Config\Adapter\Json

Source on GitHub

| Namespace | Phalcon\Config\Adapter | | Uses | Phalcon\Config, Phalcon\Helper\Json | | Extends | Config |

Reads JSON files and converts them to Phalcon\Config objects.

Given the following configuration file:

{"phalcon":{"baseuri":"\/phalcon\/"},"models":{"metadata":"memory"}}

You can read it as follows:

use Phalcon\Config\Adapter\Json;

$config = new Json("path/config.json");

echo $config->phalcon->baseuri;
echo $config->models->metadata;

Methods

public function __construct( string $filePath );
Phalcon\Config\Adapter\Json constructor

Class Phalcon\Config\Adapter\Php

Source on GitHub

| Namespace | Phalcon\Config\Adapter | | Uses | Phalcon\Config | | Extends | Config |

Reads php files and converts them to Phalcon\Config objects.

Given the next configuration file:

<?php

return [
    "database" => [
        "adapter"  => "Mysql",
        "host"     => "localhost",
        "username" => "scott",
        "password" => "cheetah",
        "dbname"   => "test_db",
    ],
    "phalcon" => [
        "controllersDir" => "../app/controllers/",
        "modelsDir"      => "../app/models/",
        "viewsDir"       => "../app/views/",
    ],
];

You can read it as follows:

use Phalcon\Config\Adapter\Php;

$config = new Php("path/config.php");

echo $config->phalcon->controllersDir;
echo $config->database->username;

Methods

public function __construct( string $filePath );
Phalcon\Config\Adapter\Php constructor

Class Phalcon\Config\Adapter\Yaml

Source on GitHub

| Namespace | Phalcon\Config\Adapter | | Uses | Phalcon\Config, Phalcon\Config\Exception | | Extends | Config |

Reads YAML files and converts them to Phalcon\Config objects.

Given the following configuration file:

phalcon:
  baseuri:        /phalcon/
  controllersDir: !approot  /app/controllers/
models:
  metadata: memory

You can read it as follows:

define(
    "APPROOT",
    dirname(__DIR__)
);

use Phalcon\Config\Adapter\Yaml;

$config = new Yaml(
    "path/config.yaml",
    [
        "!approot" => function($value) {
            return APPROOT . $value;
        },
    ]
);

echo $config->phalcon->controllersDir;
echo $config->phalcon->baseuri;
echo $config->models->metadata;

Methods

public function __construct( string $filePath, array $callbacks = null );
Phalcon\Config\Adapter\Yaml constructor

Class Phalcon\Config\ConfigFactory

Source on GitHub

| Namespace | Phalcon\Config | | Uses | Phalcon\Config, Phalcon\Config\ConfigInterface, Phalcon\Factory\AbstractFactory, Phalcon\Helper\Arr | | Extends | AbstractFactory |

Loads Config Adapter class using 'adapter' option, if no extension is provided it will be added to filePath

use Phalcon\Config\ConfigFactory;

$options = [
    "filePath" => "path/config",
    "adapter"  => "php",
];

$config = (new ConfigFactory())->load($options);

Methods

public function __construct( array $services = [] );
ConfigFactory constructor.

public function load( mixed $config ): ConfigInterface;
Load a config to create a new instance

public function newInstance( string $name, string $fileName, mixed $params = null ): ConfigInterface;
Returns a new Config instance

protected function getAdapters(): array;
Returns the adapters for the factory

Interface Phalcon\Config\ConfigInterface

Source on GitHub

| Namespace | Phalcon\Config | | Uses | Phalcon\Collection\CollectionInterface | | Extends | CollectionInterface |

Phalcon\Config\ConfigInterface

Interface for Phalcon\Config class

Methods

public function getPathDelimiter(): string;
public function merge( mixed $toMerge ): ConfigInterface;
public function path( string $path, mixed $defaultValue = null, mixed $delimiter = null ): mixed | null;
public function setPathDelimiter( string $delimiter = null ): ConfigInterface;

Class Phalcon\Config\Exception

Source on GitHub

| Namespace | Phalcon\Config | | Extends | \Phalcon\Exception |

Exceptions thrown in Phalcon\Config will use this class