1. Go to this page and download the library: Download codenamephp/platform.di 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/ */
codenamephp / platform.di example snippets
$builder = new de\codenamephp\platform\di\ContainerBuilder();
$container = $builder->build();
$container->get('...');
use de\codenamephp\platform\di\definitionsProvider\iDefinitionsProvider;
$builder = new de\codenamephp\platform\di\ContainerBuilder();
$builder->addDefinitionsByProvider(new class() implements iDefinitionsProvider{});
$container = $builder->build();
$container->get('...');
class DefinitionsProvider implements de\codenamephp\platform\di\definitionsProvider\iArray {
public function getDefinitions() : array {
return ['some class' => 'some defintion'];
}
}
class DefinitionsProvider implements de\codenamephp\platform\di\definitionsProvider\iFiles {
public function getFiles() : array {
return [__DIR__ . '/path/to/file'];
}
}
use de\codenamephp\platform\di\definitionsProvider\iArray;
use de\codenamephp\platform\di\definitionsProvider\iFiles;
use de\codenamephp\platform\di\definitionsProvider\iMetaProvider;
class MyArrayProvider implements iArray{
public function getDefinitions() : array {
return [];
}
}
class MyFileProvider implements iFiles {
public function getFiles() : array {
return [];
}
}
class MyNestedMetaProvider implements iMetaProvider {
public function getProviders() : array{
return [new MyFileProvider()];
}
}
class MyMetaProvider implements iMetaProvider {
public function getProviders() : array {
return [
new MyArrayProvider(),
new MyNestedMetaProvider()
];
}
}
use de\codenamephp\platform\di\definitionsProvider\iDefinitionsProvider;
class MustBeAddedBeforeMe implements iDefinitionsProvider {}
class DefinitionsProvider implements de\codenamephp\platform\di\definitionsProvider\dependency\iDependsOn {
public function getDependencies() : array {
return [MustBeAddedBeforeMe::class ];
}
}
use de\codenamephp\platform\di\ContainerBuilder;
use de\codenamephp\platform\di\definitionsProvider\collection\ClassNamesInArray;
use de\codenamephp\platform\di\definitionsProvider\dependency\iDependsOn;
use de\codenamephp\platform\di\definitionsProvider\iDefinitionsProvider;
class Dependency implements iDefinitionsProvider {}
class Dependant implements iDependsOn { public function getDependencies() : array{ return [Dependency::class]; } }
$collection = new ClassNamesInArray();
$collection->add(new Dependency());
$collection->add(new Dependant()); // would fail if those were reversed
//...
$containerBuilder = new ContainerBuilder();
foreach($collection->get() as $provider) { $containerBuilder->addDefinitionsByProvider($provider); }
$container = $containerBuilder->build();
//...
use de\codenamephp\platform\di\ContainerBuilder;
use de\codenamephp\platform\di\definitionsProvider\collection\TopoGraph;
use de\codenamephp\platform\di\definitionsProvider\dependency\iDependsOn;
use de\codenamephp\platform\di\definitionsProvider\iDefinitionsProvider;
class Dependency implements iDefinitionsProvider {}
class Dependant implements iDependsOn { public function getDependencies() : array{ return [Dependency::class]; } }
$collection = new TopoGraph();
$collection->add(new Dependant()); // the sequence doesn't matter
$collection->add(new Dependency());
//...
$containerBuilder = new ContainerBuilder();
foreach($collection->get() as $provider) { $containerBuilder->addDefinitionsByProvider($provider); } // Dependency will be returned/added first
$container = $containerBuilder->build();
//...
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.