prestashop / module-lib-service-container
用于 prestashop 模块的服务容器
v2.0
2022-06-20 08:30 UTC
Requires
- php: >=5.6.0
- prestashop/module-lib-cache-directory-provider: ^1.0
Requires (Dev)
- phpunit/phpunit: ~5.7
Suggests
- symfony/config: Needed when the running PrestaShop does not already run with Symfony
- symfony/dependency-injection: Needed when the running PrestaShop does not already run with Symfony
- symfony/expression-language: Needed when the running PrestaShop does not already run with Symfony
- symfony/yaml: Needed when the running PrestaShop does not already run with Symfony
This package is auto-updated.
Last update: 2024-09-20 13:38:08 UTC
README
此仓库包含来自 Symfony 的服务容器,您可以在 PrestaShop 模块中使用它。
先决条件
您应该只在 PrestaShop 环境和 PHP 5.6.0 或更高版本下安装此库。
安装
# PrestaShop 1.7+ composer require prestashop/module-lib-service-container # PrestaShop 1.6 composer require prestashop/module-lib-service-container composer require symfony/config:^3.4 symfony/dependency-injection:^3.4 symfony/expression-language:^3.4 symfony/yaml:^3.4
当此项目成功添加到您的依赖项中时,您可以将新的 ServiceContainer 添加到您的模块中并使用它。PrestaShop 从版本 1.7 开始运行 Symphony 组件,因此不再需要依赖项。如果您计划在 PrestaShop 上运行您的模块,必须单独要求 Symfony 依赖项。
使用方法
要使用此库,非常简单
- 首先,在您的根模块 PHP 文件(例如在根项目文件夹中的 mymodule.php)中声明您的新服务容器
/**
* @var ServiceContainer
*/
private $serviceContainer;
- 并在构造函数中用模块名称及其本地路径实例化它
$this->serviceContainer = new ServiceContainer($this->name, $this->getLocalPath());
- 您可以在根模块 PHP 文件中添加一个新函数,例如 getService,以在新的服务容器中检索您的服务名称
/**
* @param string $serviceName
*
* @return mixed
*/
public function getService($serviceName)
{
return $this->serviceContainer->getService($serviceName);
}
- 然后,您必须在 services.yml 文件中声明您的服务。您必须在 config/ 文件夹中声明您的服务。从 Symfony 4 开始,服务必须明确声明为公开,以便使用
getService()
方法加载;
我们在 config 中将服务分成两个文件夹:/front 和 /admin 文件夹。因此,结构应该是这样的
/mymodule
/config
/front
services.yml
/admin
services.yml
common.yml
- 当然,您可以通过 services.yml 文件中的导入来包含一个包含在 front 和 admin 项目中使用的常见服务的公共文件
imports:
- { resource: ../common.yml }
现在,您可以像在 Symfony 项目中一样在 services.yml 中添加您的服务;)