Issues (10)

Branch: analysis-A7yJ5k

config/dependencies.php (1 issue)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
use Cecil\Converter\Converter;
6
use Cecil\Converter\Parsedown;
0 ignored issues
show
This use statement conflicts with another class in this namespace, Parsedown. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are 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.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/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:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
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