跳转到内容

Phalcon配置

注意

所有类都以前缀命名Phalcon

Config\Adapter\Grouped

GitHub上的源码

  • 命名空间

    • Phalcon\Config\Adapter
  • 使用

    • Phalcon\Config\Config
    • Phalcon\Config\ConfigFactory
    • Phalcon\Config\ConfigInterface
    • Phalcon\Config\Exception
    • Phalcon\Factory\Exception
  • 继承

    Config

  • 实现

读取多个文件(或数组)并将它们合并在一起。

查看Phalcon\Config\ConfigFactory::load使用'adapter'选项加载Config适配器类。

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",
            ],
        ],
    ],
);

方法

public function __construct( array $arrayConfig, string $defaultAdapter = string );
Phalcon\Config\Adapter\Grouped构造函数

Config\Adapter\Ini

GitHub上的源码

  • 命名空间

    • Phalcon\Config\Adapter
  • 使用

    • Phalcon\Config\Config
    • Phalcon\Config\Exception
    • Phalcon\Support\Traits\PhpFileTrait
  • 继承

    Config

  • 实现

读取ini文件并将其转换为Phalcon\Config\Config对象。

给定以下配置文件:

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

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

您可以按如下方式读取它:

use Phalcon\Config\Adapter\Ini;

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

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

INI文件中也可以解析PHP常量,因此如果在调用构造函数之前将常量定义为INI值,则常量的值将被集成到结果中。要以这种方式使用它,必须将可选的第二个参数指定为INI_SCANNER_NORMAL调用构造函数时:

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

方法

public function __construct( string $filePath, int $mode = int );
Ini构造函数。

protected function cast( mixed $ini ): mixed;
我们必须手动转换值,因为parse_ini_file()的实现较差。

protected function castArray( array $ini ): array;

protected function parseIniString( string $path, mixed $value ): array;
从字符串构建多维数组

protected function phpParseIniFile( string $filename, bool $processSections = bool, int $scannerMode = int );
@todo 当我们获取 traits 时将被移除

Config\Adapter\Json

GitHub上的源码

  • 命名空间

    • Phalcon\Config\Adapter
  • 使用

    • Phalcon\Config\Config
    • Phalcon\Support\Helper\Json\Decode
  • 继承

    Config

  • 实现

读取JSON文件并将其转换为Phalcon\Config\Config对象。

给定以下配置文件:

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

您可以按如下方式读取它:

use Phalcon\Config\Adapter\Json;

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

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

方法

public function __construct( string $filePath );
Phalcon\Config\Adapter\Json构造函数

Config\Adapter\Php

GitHub上的源码

  • 命名空间

    • Phalcon\Config\Adapter
  • 使用

    • Phalcon\Config\Config
  • 继承

    Config

  • 实现

读取php文件并将其转换为Phalcon\Config\Config对象。

给定以下配置文件:

<?php

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

您可以按如下方式读取它:

use Phalcon\Config\Adapter\Php;

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

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

方法

public function __construct( string $filePath );
Phalcon\Config\Adapter\Php构造函数

Config\Adapter\Yaml

GitHub上的源码

  • 命名空间

    • Phalcon\Config\Adapter
  • 使用

    • Phalcon\Config\Config
    • Phalcon\Config\Exception
  • 继承

    Config

  • 实现

读取YAML文件并将其转换为Phalcon\Config\Config对象。

给定以下配置文件:

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

您可以按如下方式读取它:

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;

方法

public function __construct( string $filePath, array $callbacks = null );
Phalcon\Config\Adapter\Yaml构造函数

protected function phpExtensionLoaded( string $name ): bool;

protected function phpYamlParseFile( mixed $filename, mixed $pos = int, mixed $ndocs = null, mixed $callbacks = [] );
@todo 当我们获取 traits 时将被移除

Config\Config

GitHub上的源码

  • 命名空间

    • Phalcon\Config
  • 使用

    • Phalcon\Support\Collection
  • 继承

    Collection

  • 实现

    • ConfigInterface

Phalcon\Config设计用于简化应用程序内对配置数据的访问和使用。它提供了一个基于嵌套对象属性的用户界面,以便在应用程序代码中访问此配置数据。

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

常量

const DEFAULT_PATH_DELIMITER = .;

属性

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

方法

public function getPathDelimiter(): string;
获取默认路径分隔符

public function merge( mixed $toMerge ): ConfigInterface;
将一个配置合并到当前配置中

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

$globalConfig->merge($appConfig);

public function path( string $path, mixed $defaultValue = null, string $delimiter = null ): mixed;
使用点分隔路径从当前配置返回一个值。

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

public function setPathDelimiter( string $delimiter = null ): ConfigInterface;
设置默认路径分隔符

public function toArray(): array;
递归地将对象转换为数组

print_r(
    $config->toArray()
);

final protected function internalMerge( array $source, array $target ): array;
递归地执行合并

protected function setData( mixed $element, mixed $value ): void;
设置集合数据

Config\ConfigFactory

GitHub上的源码

  • 命名空间

    • Phalcon\Config
  • 使用

    • Phalcon\Config\Config
    • Phalcon\Config\ConfigInterface
    • Phalcon\Factory\AbstractFactory
  • 继承

    AbstractFactory

  • 实现

使用'adapter'选项加载Config适配器类,如果没有提供扩展名,则会将其添加到filePath

use Phalcon\Config\ConfigFactory;

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

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

方法

public function __construct( array $services = [] );
ConfigFactory构造函数。

public function load( mixed $config ): ConfigInterface;
加载配置以创建新实例

public function newInstance( string $name, string $fileName, mixed $params = null ): ConfigInterface;
返回一个新的Config实例

protected function getExceptionClass(): string;

protected function getServices(): array;
返回可用的适配器

protected function parseConfig( mixed $config ): array;

Config\ConfigInterfaceInterface

GitHub上的源码

  • 命名空间

    • Phalcon\Config
  • 使用

    • Phalcon\Support\Collection\CollectionInterface
  • 继承

    CollectionInterface

  • 实现

Phalcon\Config\ConfigInterface

Phalcon\Config\Config类的接口

方法

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

Config\Exception

GitHub上的源码

  • 命名空间

    • Phalcon\Config
  • 使用

  • 继承

    \Exception

  • 实现

在Phalcon\Config中抛出的异常将使用此类