在我的应用程序(“BIRD3”)中,我有一个NodeJS服务器,它使用hprose RPC系统与PHP服务器通信以查询它运行请求并返回结果(PHP服务器是多进程并生成一个每个请求的子流程 - 现在)。这提出了一些困难;标题,cookies,会话。
在我基于Yii1的应用程序中,我使用了runkit
扩展的开发中分支。但是,正如你所知,这是超级hacky,不干净,依赖性,不是一个聪明的主意。但它在很大程度上起作用了。以下是我所做的一些代码片段:
<?php
// Header.
runkit_function_redefine("headers_sent", '', 'return false;');
runkit_function_redefine(
"header", '$to,$replace=false,$status=200',
'return HttpResponse::header($to);'
);
// We have a custom handler.
runkit_function_redefine(
"setcookie",
'$name,$value,$expire=0,$path="/",$domain=null,$secure=false,$httponly=false',
'return HttpResponse::setcookie($name,$value,$expire,$domain,$secure,$httponly);'
);
// Because...
runkit_function_redefine(
"session_regenerate_id",
'$deleteOld=false',
'return bird3_session_regenerate_id($deleteOld);'
);
现在,为什么我需要这个?简单:Yii没有直接的方法来覆盖会话/标题/ Cookie管理而不需要很好地加载内部接线。使用扩展的派生类覆盖内部依赖关系并不是很容易,并且会大量增加配置文件。
所以我的问题是: Laravel是否允许我扩展一些类,覆盖执行Session和Header和Cookie管理的方法,并增强它以使用我的自定义函数?