gpt4 book ai didi

silverstripe - 扩展 SilverStripe 模块扩展

转载 作者:行者123 更新时间:2023-12-01 10:34:02 24 4
gpt4 key购买 nike

我在我的 SilverStripe 安装中安装了一个特定的模块。以下是目录结构

- Root
- framework
- cms
- mymodule
- code
- extensions
- CustomClass.php

这里是CustomClass.php的例子

class CustomClass extends Extension {
public function init() {
}

public function customMethod() {
}
}

我需要覆盖 CustomClass 类的 customMethod 方法。我可以很容易地更改此方法,但如果模块更新,更改此处会在将来造成麻烦。所做的所有更改都将丢失。

为此我想扩展模块中使用的扩展类。

我创建了一个扩展 /mysite/extensions/MyCustomClass.php

class MyCustomClass extends Extension {
public function customMethod() {
//do my code here
}
}

但我不知道如何应用它。我想 CustomClass::add_extension("MyCustomClass ") 但肯定这不会起作用,因为 CustomClass 中不存在 add_extension 方法。

我们如何应对这种情况?我可以改用 Injector 吗?如果是,如何在mysite/_config.php而不是_config.yml中调用呢?

最佳答案

使用注入(inject)器确实可以解决问题,但还必须使用 _config.yml。这是我所做的。

文件 /mysite/extensions/MyCustomClass.php

class MyCustomClass extends CustomClass {
public function customMethod() {
//do my code here
}
}

/mysite/_config/config.yml 我添加了以下几行

Injector:
CustomClass:
class: MyCustomClass

并且在 /mysite/_config.php 我添加了以下行

$object = Injector::inst()->create('CustomClass');

一切正常。

关于silverstripe - 扩展 SilverStripe 模块扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38821251/

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