Files
kalsport.pl/modules/inpostshipping/vendor/prestashop/module-lib-service-container
2024-11-05 12:22:50 +01:00
..
2024-11-05 12:22:50 +01:00
2024-11-05 12:22:50 +01:00
2024-11-05 12:22:50 +01:00
2024-11-05 12:22:50 +01:00
2024-11-05 12:22:50 +01:00
2024-11-05 12:22:50 +01:00
2024-11-05 12:22:50 +01:00

PrestaShop Service Container for Modules

This repository includes the service container from Symfony that you can use in your PrestaShop Module.

Pre-requisites

You should install this library only on a PrestaShop environment and with PHP 5.6.0 minimum.

Installation

composer require prestashop/module-lib-service-container

When this project is successfully added to your dependencies, you can add the new ServiceContainer to your module and use it.

Usage

To use this library, it's simple :

  • First, declare your new service Container in your root module PHP file (like mymodule.php at your root project folder) :
    /**
     * @var ServiceContainer
     */
    private $serviceContainer;
  • And instantiate it in the constructor with the module name and its local path :
$this->serviceContainer = new ServiceContainer($this->name, $this->getLocalPath());
  • You can add a new function on your root module PHP file, like getService, to retrieve your service name in the new service container :
    /**
     * @param string $serviceName
     *
     * @return mixed
     */
    public function getService($serviceName)
    {
        return $this->serviceContainer->getService($serviceName);
    }
  • Then, you have to declare your service in the services.yml file. You must declare your services in the config/ folder. We split the services in two folders in the config : /front and /admin folders. So the tree should be like :
/mymodule
    /config
        /front
            services.yml
        /admin
            services.yml
        common.yml
  • Of course, you can include a common file, with common services that are use in front and admin project by an import in the services.yml file :
imports:
  - { resource: ../common.yml }

Now you can add your services in the services.yml like you were in a Symfony project ;)