Php 从模块服务和控制器访问本地参数
我正在开发一个基于Zend Framework 3的网站,在一些模块中我需要发送电子邮件 我正在使用PERL邮件来实现这一点。它将把所有的电子邮件发送到亚马逊SES服务的生产,并为发展我使用一个免费的gmail帐户 在我的应用程序中,我想使用Php 从模块服务和控制器访问本地参数,php,zend-framework,zend-framework3,zf3,Php,Zend Framework,Zend Framework3,Zf3,我正在开发一个基于Zend Framework 3的网站,在一些模块中我需要发送电子邮件 我正在使用PERL邮件来实现这一点。它将把所有的电子邮件发送到亚马逊SES服务的生产,并为发展我使用一个免费的gmail帐户 在我的应用程序中,我想使用project/config/autoload目录下的local.php文件以本地方式存储邮件配置。这样,我可以为开发和生产提供不同的配置。因此,我在我的local.php文件中创建了以下条目: 'mail' => [ 'host' =>
project/config/autoload目录下的local.php
文件以本地方式存储邮件配置。这样,我可以为开发和生产提供不同的配置。因此,我在我的local.php
文件中创建了以下条目:
'mail' => [
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'myusername@mydomain.com',
'password' => 'mypassword',
]
一切正常,只是我不知道如何从我的模块、服务和控制器中获取这些参数
下面是我需要访问此参数的服务示例,位于module/User/src/service/UserManagerService
:
class UserManager
{
/**
* Doctrine entity manager.
* @var Doctrine\ORM\EntityManager
*/
private $entityManager;
public function __construct($entityManager)
{
$this->entityManager = $entityManager;
}
public function addUser($data)
{
**// Need to access the configuration data from here to send email**
}
}
此服务有一个工厂:
<?php
namespace User\Service\Factory;
use Interop\Container\ContainerInterface;
use User\Service\UserManager;
class UserManagerFactory
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
$entityManager = $container->get('doctrine.entitymanager.orm_default');
return new UserManager($entityManager);
}
}
配置存储在容器中的Config
下。您可以像从容器中获得服务或其他任何东西一样检索它。这适用于使用工厂从容器中检索到的任何内容(服务、控制器)。最佳实践是在工厂内检索配置选项并将其传递给服务或控制器
您的工厂:
<?php
namespace User\Service\Factory;
use Interop\Container\ContainerInterface;
use User\Service\UserManager;
class UserManagerFactory
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
$entityManager = $container->get('doctrine.entitymanager.orm_default');
$config = $container->get('Config');
return new UserManager($entityManager, $config['mail']);
/* Or write this as:
return new UserManager(
$container->get('doctrine.entitymanager.orm_default'),
$container->get('Config')['mail']
);
*/
}
}
配置存储在容器中的Config
下。您可以像从容器中获得服务或其他任何东西一样检索它。这适用于使用工厂从容器中检索到的任何内容(服务、控制器)。最佳实践是在工厂内检索配置选项并将其传递给服务或控制器
您的工厂:
<?php
namespace User\Service\Factory;
use Interop\Container\ContainerInterface;
use User\Service\UserManager;
class UserManagerFactory
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
$entityManager = $container->get('doctrine.entitymanager.orm_default');
$config = $container->get('Config');
return new UserManager($entityManager, $config['mail']);
/* Or write this as:
return new UserManager(
$container->get('doctrine.entitymanager.orm_default'),
$container->get('Config')['mail']
);
*/
}
}