Skip to content

Phalcon config

NOTE

All classes are prefixed with Phalcon

Config\Config

Source on GitHub

  • Namespace

    • Phalcon\Config
  • Uses

    • Phalcon\Collection
  • 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

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

  • Implements

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

Config\Adapter\Ini

Source on GitHub

  • Namespace

    • Phalcon\Config\Adapter
  • Uses

    • Phalcon\Config
    • Phalcon\Config\Exception
    • Phalcon\Traits\PhpFileTrait
  • Extends

    Config

  • Implements 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

Config\Adapter\Json

Source on GitHub

  • Namespace

    • Phalcon\Config\Adapter
  • Uses

    • Phalcon\Config
    • Phalcon\Helper\Json
  • Extends

    Config

  • Implements 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

Config\Adapter\Php

Source on GitHub

  • Namespace

    • Phalcon\Config\Adapter
  • Uses

    • Phalcon\Config
  • Extends

    Config

  • Implements

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

Config\Adapter\Yaml

Source on GitHub

  • Namespace

    • Phalcon\Config\Adapter
  • Uses

    • Phalcon\Config
    • Phalcon\Config\Exception
  • Extends

    Config

  • Implements

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

Config\ConfigFactory

Source on GitHub

  • Namespace

    • Phalcon\Config
  • Uses

    • Phalcon\Config
    • Phalcon\Config\ConfigInterface
    • Phalcon\Factory\AbstractFactory
  • Extends

    AbstractFactory

  • Implements

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

Config\ConfigInterface Interface

Source on GitHub

  • Namespace

    • Phalcon\Config
  • Uses

    • Phalcon\Collection\CollectionInterface
  • Extends

    CollectionInterface

  • Implements

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;

Config\Exception

Source on GitHub

  • Namespace

    • Phalcon\Config
  • Uses

  • Extends

    \Exception

  • Implements

Exceptions thrown in Phalcon\Config will use this class