2017 © Pedro PelΓ‘ez
 

library yaml-config

config code generator from yaml config

image

4slv/yaml-config

config code generator from yaml config

  • Saturday, July 7, 2018
  • by 4slv
  • Repository
  • 0 Watchers
  • 0 Stars
  • 426 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 18 Versions
  • 461 % Grown

The README.md

yaml_config

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ позволяСт ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ООП ΠΊΠΎΠ΄ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΈΠ· yaml-Ρ„Π°ΠΉΠ»Π°.

НапримСр, ΠΈΠ· yaml-Ρ„Π°ΠΉΠ»Π°:, (*1)

family: # сСмья
  father: # ΠΎΡ‚Π΅Ρ†
    name: Bob # имя
    hobby: # Ρ…ΠΎΠ±Π±ΠΈ
      - sport # спорт
      - boardgames # Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹
    story: | # биография
      родился Π² Π‘Π°Ρ„Π°Π»ΠΎ: # мСсто роТдСния
      учился Π² Ρ†Π΅Ρ€ΠΊΠΎΠ²Π½ΠΎ-приходской школС
  doter: # Π΄ΠΎΡ‡ΡŒ
    name: Mila # имя
    age: # возраст
      '2017-04-17': 0
      '2018-04-17': 1
      '2019-04-17': 2
  • ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сгСнСрируСт php-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ значСниям ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° Π² ООП-стилС:
$config = new Config($date);
$fatherName = $config
    ->getFamily()
    ->getFather()
    ->getName();

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $fatherName Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Bob., (*2)

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свойства с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ сроком дСйствия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ yaml-Ρ„Π°ΠΉΠ»Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойству family.doter.age Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Π² конструктор Π΄Π°Ρ‚Ρ‹:
$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();
}

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $doterAgeList содСрТит массив: [1,2,0], (*3)

  • Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ php-ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ phpDoc-ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ коммСнтариям Π² yaml-Ρ„Π°ΠΉΠ»Π΅

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

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(); // ГСнСрация ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ generate: 1) Если ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² исходном ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со сгСнСрированным ΠΊΠΎΠ΄ΠΎΠΌ) Π½Π΅Ρ‚, Ρ‚ΠΎ пСрСгСнСрация Π½Π΅ происходит. 2) Π’ качСствС Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° generate ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°., (*4)

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹

ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ интСрфСйсов для классов ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. 1) Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ интСрфСйсы., (*5)

По структурС yaml ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ yaml ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€ yaml:, (*6)

family: # сСмья
   father: # ΠΎΡ‚Π΅Ρ†
     name: Bob # имя
     hobby: # Ρ…ΠΎΠ±Π±ΠΈ 
       - sport # спорт
       - boardgames # Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹
     story: | # биография
       родился Π² Π‘Π°Ρ„Π°Π»ΠΎ: # мСсто роТдСния
       учился Π² Ρ†Π΅Ρ€ΠΊΠΎΠ²Π½ΠΎ-приходской школС
   doter: # Π΄ΠΎΡ‡ΡŒ
     name: Mila # имя
     age: # возраст
       '2017-04-17': 0
       '2018-04-17': 1
       '2019-04-17': 2
  

Боздаст интСрфСйс Π½Π° самом Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ иСрархичСском ΡƒΡ€ΠΎΠ²Π½Π΅:, (*7)

<?php
  
  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();
  
  }
  

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ находится интСрфСйсы Father ΠΈ Doter. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€ интСрфСйс Doter:, (*8)

<?php
  
  namespace Config\Interfaces\Family\Family;
  
  use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
  
  
  interface Doter extends InterfaceConfigNode {
  
     /** @return string ΠΎΡ‚Π΅Ρ† */
     public function getName();
     
     /** @return int Π΄ΠΎΡ‡ΡŒ */
     public function getAge();
  
  }
  

Код для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ интСрфСйсов ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΊΠΎΠ΄ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°. Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:, (*9)

<?php
  
  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();
  

2) Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ описанныС списком. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры yaml:, (*10)

family_member: # НаимСнованиС интСрфСйса(ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ интСрфСйсу)
   xpath: # Бписок xpath ΠΊ элСмСнтам ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ
     - /family/*[name]
   property: # Бписок свойств указываСтся для указания Π³Π΅Ρ‚Ρ‚Π΅Ρ€ΠΎΠ² для Π½ΠΈΡ…
     name: # Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ свойства (ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ Π³Π΅Ρ‚Π΅Ρ€Ρ€Ρƒ)
       type: string #Ρ‚ΠΈΠΏ свойства
  family_father: # НаимСнованиС интСрфСйса 
   xpath: # Бписок xpath ΠΊ элСмСнтам ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ
      - /family/father[name and hobby]
   property:
     hobby: # Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ свойства  
       type: string
     name: # Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ свойства
       type: string #Ρ‚ΠΈΠΏ свойства
  

Π”Π°Π½Π½Ρ‹ΠΉ yaml Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 2 интСрфСйса:, (*11)

<?php
  
  namespace Config\Interfaces\Family;
  
  use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;
  
  /**
  * НаимСнованиС интСрфСйса(ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ интСрфСйсу)
  */
  interface FamilyMember extends InterfaceConfigNode {
  
     /** @return string Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ свойства (ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ Π³Π΅Ρ‚Π΅Ρ€Ρ€Ρƒ) */
     public function getName();
  
  }
  

```php <?php, (*12)

namespace Config\Interfaces\Family;, (*13)

use YamlConfig\InterfaceCodeGenerator\InterfaceConfigNode;, (*14)

/** * НаимСнованиС интСрфСйса */ interface FamilyFather extends InterfaceConfigNode {, (*15)

/** @return string Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ свойства */ public function getName();, (*16)

/** @return string Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ свойства */ public function getHobby();, (*17)

}, (*18)

Код для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ интСрфСйсов:

```php
<?php

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();

3) ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ интСрфСйсов ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:, (*19)

<?php
  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(); // ГСнСрация ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°
  

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ класса Father Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ этим ΠΊΠΎΠ΄ΠΎΠΌ:, (*20)

<?php
  
  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');
     }
  
  }
  

The Versions

07/07 2018

dev-master

9999999-dev

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alexey Dobrynin

07/07 2018

v1.1.3

1.1.3.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alexey Dobrynin

04/07 2018

v1.1.2

1.1.2.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alexey Dobrynin

03/07 2018

v1.1.1

1.1.1.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alexey Dobrynin

20/06 2018

v1.1.0

1.1.0.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alexey Dobrynin

19/06 2018

v1.0.9

1.0.9.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

05/06 2018

v1.0.8

1.0.8.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

01/06 2018

v1.0.7

1.0.7.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

31/05 2018

dev-SLOV-3120

dev-SLOV-3120

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

29/05 2018

v1.0.5

1.0.5.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

29/05 2018

v1.0.6

1.0.6.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

29/05 2018

dev-SLOV-3110

dev-SLOV-3110

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

29/05 2018

v1.0.4

1.0.4.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

23/05 2018

v1.0.3

1.0.3.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

23/05 2018

dev-patch-1

dev-patch-1

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

07/05 2018

v1.0.2

1.0.2.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

04/05 2018

v1.0.1

1.0.1.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin

25/04 2018

v1.0.0

1.0.0.0

config code generator from yaml config

  Sources   Download

MIT

The Requires

 

by Alexey Dobrynin