Yii 2.0如何扩展核心类
我想扩展类yii\web\Response。因此,我在文件夹components中创建了一个新的类响应,并尝试覆盖send方法Yii 2.0如何扩展核心类,yii,yii2,yii-components,Yii,Yii2,Yii Components,我想扩展类yii\web\Response。因此,我在文件夹components中创建了一个新的类响应,并尝试覆盖send方法 namespace app\components; use Yii; class Response extends \yii\web\Response{ public function init(){ parent::init(); } /** * Sends the response to the client
namespace app\components;
use Yii;
class Response extends \yii\web\Response{
public function init(){
parent::init();
}
/**
* Sends the response to the client.
*/
public function send()
{ ...
最后,我尝试通过在配置中导入新的响应类来导入它
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'import' => [
'class' => 'app\components\Response',
],
为什么它不能像这样工作?像这样试试:
'components' => [
'response' => [
'class' => 'app\components\Response',
],
好主意,但这只是覆盖了(Yii::$app)下的属性而不是核心类strue,还没有尝试过,但当通过controllerMap@Shqear设置它时,这可能会起作用-他的答案确实覆盖了核心类!您告诉它使用
\app\components\Response
而不是\yii\web\Response
。按照你的问题完成任务。如果有什么问题没有解决,请更新您的问题。在你的评论中,你说“不是核心类”\yii\web\Response
是一个核心类,那么您还需要什么呢?响应文档:-响应源:@WadeShuler请注意,这不是我的问题,但是,我正在寻找一种方法,在不操纵源代码的情况下用我自己的替换yii2中的一个核心类,因此它提供了一种简单的方法来覆盖一个particuler类,以便在所有其他核心类中使用它,而不扩展它们,但不幸的是,Yii2不支持这样的事情,在当前的情况下这是不可能的version@Shqear-我不太明白你说的不操纵源代码是什么意思。您可以扩展任何核心类,并将其放在/components/BaseController.php
和普通控制器中,这些控制器“扩展”该类而不是yii/web/controller/
。您必须更改要在其中使用的每个控制器中的名称空间/路径,否则它们将指向错误的文件。-我认为你想要什么是不可能的。有没有什么框架可以实现你所说的?