PHP code example of 4slv / yaml-config

1. Go to this page and download the library: Download 4slv/yaml-config library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

4slv / yaml-config example snippets


$config = new Config($date);
$fatherName = $config
    ->getFamily()
    ->getFather()
    ->getName();


$dateList = [
    '2018-04-17',
    '2019-09-12',
    '2017-09-01'
];
foreach($dateList as $date){
    $dateTime = new DateTime($date);
    $config = new Config($dateTime);
    $doterAgeList[] = $config
        ->getFamily()
        ->getDoter()
        ->getAge();
}


use YamlConfig\ClassCodeGenerator\ConfigClassTreeGenerator;
use YamlConfig\YamlFileToTree;

$configGenerator = new ConfigClassTreeGenerator();
$yamlFileToTree = new YamlFileToTree(); // объект преобразователь конфигурационного файла в конфигурацию
$yamlFileToTree
    ->setConfigRelativePath($organizationsRelativePath); //относительный путь расположения yaml-файл с настройками
$configGenerator
    ->setProjectPath($rootDir) // путь к папке проекта
    ->setYamlFileToTree($yamlFileToTree) // объект преобразователь конфигурационного файла в конфигурацию
    ->setConfigCodeRelativePath($organizationsCodeRelativePath) // относительный путь к папке в которой будут сгенерирован код конфига
    ->setConfigName('Family') // название класса конфига
    ->setConfigNamespace('Config\Family') // пространство имён конфига
    ->generate(); // Генерация кода конфига

    >
    >
    >namespace Config\Interfaces\Family;
    >
    >use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
    >use Config\Interfaces\Family\Family\Father;
    >use Config\Interfaces\Family\Family\Doter;
    >
    >
    >interface Family extends InterfaceConfigNode {
    >
    >    /** @return Father отец */
    >    public function getFather();
    >    
    >    /** @return Doter дочь */
    >    public function getDoter();
    >
    >}
    >

    >
    >
    >namespace Config\Interfaces\Family\Family;
    >
    >use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
    >
    >
    >interface Doter extends InterfaceConfigNode {
    >
    >    /** @return string отец */
    >    public function getName();
    >    
    >    /** @return int дочь */
    >    public function getAge();
    >
    >}
    >

    >
    >
    >use YamlConfig\InterfaceCodeGenerator\ConfigInterfaceTreeGenerator;
    >use \YamlConfig\YamlFileToTree;
    >
    >$configInterfaceTreeGenerator = new ConfigInterfaceTreeGenerator();
    >$yamlFileToTree = new YamlFileToTree(); // объект преобразователь конфигурационного файла в конфигурацию
    >$yamlFileToTree
    >    ->setConfigRelativePath($organizationsRelativePath); //относительный путь расположения yaml-файл с настройками
    >$configInterfaceTreeGenerator
    >    ->setProjectPath($rootDir)  // путь к папке проекта
    >    ->setYamlFileToTree($yamlFileToTreeInterface) // объект преобразователь конфигурационного файла в конфигурацию
    >    ->setConfigCodeRelativePath($organizationsCodeRelativePath) // относительный путь к папке в которой будут сгенерирован код конфига
    >    ->setConfigName('Family') // название класса конфига
    >    ->setConfigNamespace('Config\Interfaces\Family') // пространство имён конфига
    >    ->generate();
    >

    >
    >
    >namespace Config\Interfaces\Family;
    >
    >use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
    >
    >/**
    > * Наименование интерфейса(Комментарий будет использоваться как комментарий к интерфейсу)
    > */
    >interface FamilyMember extends InterfaceConfigNode {
    >
    >    /** @return string наименование свойства (Комментарий будет использоваться как комментарий к гетерру) */
    >    public function getName();
    >
    >}
    >

    >
    >
    >namespace Config\Interfaces\Family;
    >
    >use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
    >
    >/**
    > * Наименование интерфейса
    > */
    >interface FamilyFather extends InterfaceConfigNode {
    >
    >    /** @return string наименование свойства */
    >    public function getName();
    >
    >    /** @return string наименование свойства */
    >    public function getHobby();
    >
    >}
    >

    >
    >
    >use YamlConfig\InterfaceCodeGenerator\ConfigInterfaceListTreeGenerator;
    >use \YamlConfig\YamlFileToTree;
    >
    >$configInterfaceTreeGenerator = new ConfigInterfaceListTreeGenerator();
    >$yamlFileToTree = new YamlFileToTree(); // объект преобразователь конфигурационного файла в конфигурацию
    >$yamlFileToTree
    >    ->setConfigRelativePath($organizationsRelativePath); //относительный путь расположения yaml-файл с настройками
    >$configInterfaceTreeGenerator
    >    ->setProjectPath($rootDir)  // путь к папке проекта
    >    ->setYamlFileToTree($yamlFileToTreeInterface) // объект преобразователь конфигурационного файла в конфигурацию
    >    ->setConfigCodeRelativePath($organizationsCodeRelativePath) // относительный путь к папке в которой будут сгенерирован код конфига
    >    ->setConfigName('Family') // название класса конфига
    >    ->setConfigNamespace('Config\Interfaces\Family') // пространство имён конфига
    >    ->generate();
    >

    >
    >use YamlConfig\ClassCodeGenerator\ConfigClassTreeGenerator;
    >use YamlConfig\YamlFileToTree;
    >
    >$configGenerator = new ConfigClassTreeGenerator();
    >$yamlFileToTree = new YamlFileToTree(); // объект преобразователь конфигурационного файла в конфигурацию
    >$yamlFileToTree
    >    ->setConfigRelativePath($organizationsRelativePath); //относительный путь расположения yaml-файл с настройками
    >$yamlFileToTreeHierarchicalInterface = new YamlFileToTree(); // объект преобразователь конфигурационного файла в конфигурацию
    >$yamlFileToTreeHierarchicalInterface
    >    ->setConfigRelativePath($organizationsRelativePath); //относительный путь расположения yaml-файл с настройками
    >$yamlFileToTreeDescribedInterfaces = new YamlFileToTree(); // объект преобразователь конфигурационного файла в конфигурацию
    >$yamlFileToTreeDescribedInterfaces
    >    ->setConfigRelativePath($organizationsRelativePath); //относительный путь расположения yaml-файл с настройками
    >$configGenerator
    >    ->setProjectPath($rootDir) // путь к папке проекта
    >    ->setYamlFileToTree($yamlFileToTree) // объект преобразователь конфигурационного файла в конфигурацию
    >    ->setConfigCodeRelativePath($organizationsCodeRelativePath) // относительный путь к папке в которой будут сгенерирован код конфига
    >    ->setConfigName('Family') // название класса конфига
    >    ->setConfigNamespace('Config\Family') // пространство имён конфига
    >    ->setYamlFileToTreeHierarchicalInterfaces($yamlFileToTreeHierarchicalInterface) // преобразователь конфигурационного файла в конфигурацию для иерархических интерфейсов 
    >    ->setYamlFileToTreeDescribedInterfaces($yamlFileToTreeDescribedInterfaces) // преобразователь конфигурационного файла в конфигурацию для описанных интерфейсов
    >    ->setConfigHierarchicalInterfacesNamespace('Config\Interfaces\HierarchicalInterface') // пространство имён иерархических интерфейсов для узлов конфига
    >    ->setConfigDescribedInterfacesNamespace('Config\Interfaces\DescribedInterfaces') //  пространство имён описанных интерфейсов для узлов конфига
    >    ->generate(); // Генерация кода конфига
    >

    >
    >
    >namespace Config\Family\Family;
    >
    >use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
    >use Config\Interfaces\HierarchicalInterface\Family\Family\Father as FatherInterface;
    >use Config\Interfaces\DescribedInterfaces\FamilyFather as FamilyFatherInterface;
    >use use Config\Interfaces\DescribedInterfaces\FamilyMember as FamilyMemberInterface;
    >
    >/**
    > * Наименование интерфейса
    > */
    >class Father extends InterfaceConfigNode implements FatherInterface, FamilyFatherInterface, FamilyMemberInterface
    >{
    >
    >    /** @return string наименование свойства */
    >    public function getName()
    >    {
    >        return $this->getActualProperty('name');
    >    }
    >
    >    /** @return string наименование свойства */
    >    public function getHobby()
    >    {
    >        return $this->getActualProperty('hobby');
    >    }
    >
    >}
    >