Cecilapp /
Cecil
| 1 | <?php |
||
| 2 | |||
| 3 | declare(strict_types=1); |
||
| 4 | |||
| 5 | use Cecil\Converter\Converter; |
||
| 6 | use Cecil\Converter\Parsedown; |
||
|
0 ignored issues
–
show
|
|||
| 7 | use Cecil\Generator\Alias; |
||
| 8 | use Cecil\Generator\DefaultPages; |
||
| 9 | use Cecil\Generator\ExternalBody; |
||
| 10 | use Cecil\Generator\GeneratorManager; |
||
| 11 | use Cecil\Generator\Homepage; |
||
| 12 | use Cecil\Generator\Pagination; |
||
| 13 | use Cecil\Generator\Redirect; |
||
| 14 | use Cecil\Generator\Section; |
||
| 15 | use Cecil\Generator\Taxonomy; |
||
| 16 | use Cecil\Generator\VirtualPages; |
||
| 17 | use Cecil\Renderer\Twig\TwigFactory; |
||
| 18 | use Cecil\Step\Assets\Save as AssetsSave; |
||
| 19 | use Cecil\Step\Data\Load as DataLoad; |
||
| 20 | use Cecil\Step\Menus\Create as MenusCreate; |
||
| 21 | use Cecil\Step\Optimize\Css as OptimizeCss; |
||
| 22 | use Cecil\Step\Optimize\Html as OptimizeHtml; |
||
| 23 | use Cecil\Step\Optimize\Images as OptimizeImages; |
||
| 24 | use Cecil\Step\Optimize\Js as OptimizeJs; |
||
| 25 | use Cecil\Step\Pages\Convert; |
||
| 26 | use Cecil\Step\Pages\Create as PagesCreate; |
||
| 27 | use Cecil\Step\Pages\Generate; |
||
| 28 | use Cecil\Step\Pages\Load as PagesLoad; |
||
| 29 | use Cecil\Step\Pages\Render; |
||
| 30 | use Cecil\Step\Pages\Save as PagesSave; |
||
| 31 | use Cecil\Step\StaticFiles\Copy as StaticFilesCopy; |
||
| 32 | use Cecil\Step\StaticFiles\Load as StaticFilesLoad; |
||
| 33 | use Cecil\Step\Taxonomies\Create as TaxonomiesCreate; |
||
| 34 | use Psr\Log\LoggerInterface; |
||
| 35 | |||
| 36 | use function DI\autowire; |
||
| 37 | use function DI\get; |
||
| 38 | |||
| 39 | /** |
||
| 40 | * Dependencies configuration for PHP-DI. |
||
| 41 | * |
||
| 42 | * @see https://php-di.org/doc/php-definitions.html |
||
| 43 | */ |
||
| 44 | return [ |
||
| 45 | /* |
||
| 46 | * Converters |
||
| 47 | */ |
||
| 48 | // Parsedown : injecte Config et Builder |
||
| 49 | Parsedown::class => autowire() |
||
| 50 | ->constructorParameter('config', get(\Cecil\Config::class)) |
||
| 51 | ->constructorParameter('options', null), |
||
| 52 | // Converter : injecte automatiquement Parsedown |
||
| 53 | Converter::class => autowire() |
||
| 54 | ->constructorParameter('parsedown', get(Parsedown::class)), |
||
| 55 | |||
| 56 | /* |
||
| 57 | * Generators |
||
| 58 | */ |
||
| 59 | // GeneratorManager : injecte Builder, Config et Logger |
||
| 60 | GeneratorManager::class => autowire(), |
||
| 61 | // Individual generators |
||
| 62 | ExternalBody::class => autowire(), |
||
| 63 | VirtualPages::class => autowire(), |
||
| 64 | Homepage::class => autowire(), |
||
| 65 | Section::class => autowire(), |
||
| 66 | Taxonomy::class => autowire(), |
||
| 67 | Pagination::class => autowire(), |
||
| 68 | Alias::class => autowire(), |
||
| 69 | Redirect::class => autowire(), |
||
| 70 | DefaultPages::class => autowire(), |
||
| 71 | |||
| 72 | /* |
||
| 73 | * Build lifecycle steps |
||
| 74 | */ |
||
| 75 | // Phase 1: Load |
||
| 76 | PagesLoad::class => autowire(), |
||
| 77 | DataLoad::class => autowire(), |
||
| 78 | StaticFilesLoad::class => autowire(), |
||
| 79 | // Phase 2: Create |
||
| 80 | PagesCreate::class => autowire(), |
||
| 81 | TaxonomiesCreate::class => autowire(), |
||
| 82 | MenusCreate::class => autowire(), |
||
| 83 | // Phase 3: Process |
||
| 84 | Convert::class => autowire(), |
||
| 85 | Generate::class => autowire(), |
||
| 86 | Render::class => autowire(), |
||
| 87 | // Phase 4: Copy & Save |
||
| 88 | StaticFilesCopy::class => autowire(), |
||
| 89 | PagesSave::class => autowire(), |
||
| 90 | AssetsSave::class => autowire(), |
||
| 91 | // Phase 5: Optimize |
||
| 92 | OptimizeHtml::class => autowire(), |
||
| 93 | OptimizeCss::class => autowire(), |
||
| 94 | OptimizeJs::class => autowire(), |
||
| 95 | OptimizeImages::class => autowire(), |
||
| 96 | |||
| 97 | /* |
||
| 98 | * Services |
||
| 99 | */ |
||
| 100 | // Twig Factory: for lazy loading of template engine |
||
| 101 | TwigFactory::class => autowire(), |
||
| 102 | |||
| 103 | // Config and Logger will be dynamically injected by Builder |
||
| 104 | // (see ContainerFactory::create) |
||
| 105 | ]; |
||
| 106 |
Let?s assume that you have a directory layout like this:
. |-- OtherDir | |-- Bar.php | `-- Foo.php `-- SomeDir `-- Foo.phpand let?s assume the following content of
Bar.php:If both files
OtherDir/Foo.phpandSomeDir/Foo.phpare loaded in the same runtime, you will see a PHP error such as the following:PHP Fatal error: Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.phpHowever, as
OtherDir/Foo.phpdoes not necessarily have to be loaded and the error is only triggered if it is loaded beforeOtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias: