gpt4 book ai didi

php - zf2 创建简单服务并通过 viewhelper 访问它

转载 作者:可可西里 更新时间:2023-10-31 22:12:56 26 4
gpt4 key购买 nike

我正在尝试在 zf2 中创建一个简单的服务,我可以在 viewhelper 中使用它来访问

第一步。我在 src/Application/Service/Service1.php 中创建了一个类,如下所示

namespace Application\Service;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class Service1 implements ServiceLocatorAwareInterface
{

public function __construct()
{

}

public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{

}

public function getServiceLocator()
{

}

}

Step2 我在 module.php 文件中设置如下。

public function getServiceConfig()
{
return array(
'factories' => array(
'Application\Service\Service1' => function ($sm) {
return new \Application\Service\Service1($sm);
},
)
);
}

public function onBootstrap($e)
{
$serviceManager = $e->getApplication()->getServiceManager();

$serviceManager->get('viewhelpermanager')->setFactory('Abc', function ($sm) use ($e) {
return new \Application\View\Helper\Abc($sm);
});
}

第 3 步 最后我在我的 View 助手 src/Application/View/Helper/Abc.php test() 方法中得到了它,我评论了这一行 $this->sm ->get('Application\Service\Service1'); 没有错误,一定是我在服务中遗漏了什么?

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;

class Abc extends AbstractHelper
{
protected $sm;

public function test()
{
$this->sm->get('Application\Service\Service1');
}
public function __construct($sm) {
$this->sm = $sm;

}
}

Step4 然后我在这样的 View 之一中调用我的测试 View 助手。

$this->Abc()->test();

我收到以下错误。

Fatal error: Call to undefined method Application\Service\Service1::setView() in vendor/zendframework/zendframework/library/Zend/View/HelperPluginManager.php on line 127 Call Stack:

我错过了什么?

最佳答案

仅在 PHP 5.4 中没有特定配置的替代方法是使用 traits :

module.config.php 的摘录:

'view_helpers' => array(
'invokables' => array(
'myHelper' => 'Application\View\Helper\MyHelper',
),

MyHelper.php:

<?php
namespace Application\View\Helper;

use Zend\ServiceManager\ServiceLocatorAwareInterface;

class HeadScript extends \Zend\View\Helper\MyHelper implements ServiceLocatorAwareInterface
{
use \Zend\ServiceManager\ServiceLocatorAwareTrait;

public function __invoke()
{
$config = $this->getServiceLocator()->getServiceLocator()->get('Config');
// do something with retrived config
}

}

关于php - zf2 创建简单服务并通过 viewhelper 访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com