我公司正在开发的Zend Expressive项目已准备好发货,但在我们的暂存环境中,我们似乎缺少CORS飞行前请求的响应标头.这在我们的开发环境中不会发生.我们在我们的管道中使用CorsMiddleware,但它看起来并不像中间件是罪魁祸首.
在运行时,中间件检测传入的飞行前请求,它将回复如下响应:
HTTP/1.1 200 OK
Date: Mon, 20 Aug 2018 15:09:03 GMT
Server: Apache
X-Powered-By: PHP/7.1.19
Access-Control-Allow-Origin: https://example.com
Vary: Origin
Access-Control-Allow-Headers: content-type
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
嗯,这只适用于我们的开发服务器和php的内置Web服务器.响应与我们的登台服务器不同,即使请求完全相同,除了主机:
HTTP/1.1 200 OK
Date: Mon, 20 Aug 2018 15:11:29 GMT
Server: Apache
Keep-Alive: timeout=5, max=100
Cache-Control: max-age=0, no-cache
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
我们已经验证CorsMiddleware运行完美,实际上设置了所需的标题.当我们修改CorsMiddleware的响应代码,并将其设置202的,而不是200我们现在做的也得到了我们正在寻找的头.更改响应代码200使标题再次消失.
使用以下示例:
header('Access-Control-Allow-Origin: https://example.com');
header('Access-Control-Allow-Headers: content-type');
header('Vary: Origin');
exit(0); …Run Code Online (Sandbox Code Playgroud) 对于那些已经开始玩zend表达的人来说,它需要知道zend框架2吗?我是否必须学习/了解zf2才能使用表达?还是他们做了足够的改变,学习zf2会毫无意义/混乱?
沿着这些相同的行,除了zend-expressive.readthedocs.org页面,任何人都可以推荐一些好的教程/ 演练来开始吗?
我正在写一个新的ZF2应用程序.我注意到ZF3已经弃用了"从任何地方"调用服务的ServiceLocator使用模式.我想为ZF3编写代码.
我能够设置我的Controller在构造函数时调用所有依赖项.但这意味着Doctrine在我需要它之前加载ie 对象.
题
如何设置它以便仅在我需要它时立即加载?(延迟加载).我知道ZF3将加载移动到Controller构造,这使得如何加载Just-In-Time的东西并不明显.
旧代码
class CommissionRepository
{
protected $em;
function getRepository()
{
//Initialize Doctrine ONLY when getRepository is called
//it is not always called, and Doctrine is not always set up
if (! $this->em)
$this->em = $this->serviceLocator->get('doctrine');
return $this->em;
}
}
Run Code Online (Sandbox Code Playgroud)
重构ServiceLocator模式后的当前代码
class CommissionRepository
{
protected $em;
function getRepository()
{
return $this->em;
}
function setRepository($em)
{
$this->em = $em;
}
function useRepository($id)
{
return $this->em->find($id);
}
}
class CommissionControllerFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator) …Run Code Online (Sandbox Code Playgroud) deprecated service-locator zend-framework2 zend-framework3 zend-expressive
我正在用PHP开始一个新项目,并希望选择最新的ZendFramework.我看到Zend Framework 3已经发布,所以我想从Zend Framework 3开始.但是当我进入Zend 的INSTALL页面时,他们给出了Zend MVC和Zend表达的选项.
我阅读了它们,并了解到Expressive是一个微框架,而MVC是一个全栈框架.除此之外,我对它们并不十分清楚.
我看到Zend MVC也适用于ZF2,文档说MVC是一个层.虽然我找不到Expressive for zf2.
题:
zend-http,zend-json等,所以在这些(表现力和MVC)只是建在不同的Zend组件?php zend-framework zend-framework2 zend-framework3 zend-expressive