Вход Регистрация
Файл: gapps/vendor/prettus/l5-repository/src/Prettus/Repository/Generators/BindingsGenerator.php
Строк: 122
<?php
namespace PrettusRepositoryGenerators;

/**
 * Class BindingsGenerator
 * @package PrettusRepositoryGenerators
 */
class BindingsGenerator extends Generator
{

    
/**
     * The placeholder for repository bindings
     *
     * @var string
     */
    
public $bindPlaceholder '//:end-bindings:';
    
/**
     * Get stub name.
     *
     * @var string
     */
    
protected $stub 'bindings/bindings';

    public function 
run()
    {


        
// Add entity repository binding to the repository service provider
        
$provider File::get($this->getPath());
        
$repositoryInterface '\' . $this->getRepository() . "::class";
        $repositoryEloquent = '
\' . $this->getEloquentRepository() . "::class";
        File::put($this->getPath(), str_replace($this->bindPlaceholder, "$this->app->bind({$repositoryInterface}, $repositoryEloquent);" . PHP_EOL . '        ' . $this->bindPlaceholder, $provider));
    }

    /**
     * Get destination path for generated file.
     *
     * @return string
     */
    public function getPath()
    {
        return $this->getBasePath() . '
/Providers/' . parent::getConfigGeneratorClassPath($this->getPathConfigNode(), true) . '.php';
    }

    /**
     * Get base path of destination file.
     *
     * @return string
     */
    public function getBasePath()
    {
        return config('
repository.generator.basePath', app_path());
    }

    /**
     * Get generator path config node.
     *
     * @return string
     */
    public function getPathConfigNode()
    {
        return '
provider';
    }

    /**
     * Gets repository full class name
     *
     * @return string
     */
    public function getRepository()
    {
        $repositoryGenerator = new RepositoryInterfaceGenerator([
            '
name' => $this->name,
        ]);

        $repository = $repositoryGenerator->getRootNamespace() . '
\' . $repositoryGenerator->getName();

        return str_replace([
            "\",
            '
/'
        ], '
\', $repository) . 'Repository';
    }

    /**
     * Gets eloquent repository full class name
     *
     * @return string
     */
    public function getEloquentRepository()
    {
        $repositoryGenerator = new RepositoryEloquentGenerator([
            '
name' => $this->name,
        ]);

        $repository = $repositoryGenerator->getRootNamespace() . '
\' . $repositoryGenerator->getName();

        return str_replace([
            "\",
            '
/'
        ], '
\', $repository) . 'RepositoryEloquent';
    }

    /**
     * Get root namespace.
     *
     * @return string
     */
    public function getRootNamespace()
    {
        return parent::getRootNamespace() . parent::getConfigGeneratorClassPath($this->getPathConfigNode());
    }

    /**
     * Get array replacements.
     *
     * @return array
     */
    public function getReplacements()
    {

        return array_merge(parent::getReplacements(), [
            '
repository' => $this->getRepository(),
            '
eloquent' => $this->getEloquentRepository(),
            '
placeholder' => $this->bindPlaceholder,
        ]);
    }
}
Онлайн: 1
Реклама