Plugins 在10月份重构一个部分

Plugins 在10月份重构一个部分,plugins,refactoring,octobercms,Plugins,Refactoring,Octobercms,你好 我有几个有代码的部分。在“代码”选项卡中,我注意到“代码”选项卡具有相似的代码外观。这里有一些例子 第1部分 function onStart() { $x = MyModel1::where('myColumn', 'myValue')->first(); // lots of stuff using $x functions $this['viewData'] = $x->getViewData(); } 第2部分 function onStart

你好

我有几个有代码的部分。在“代码”选项卡中,我注意到“代码”选项卡具有相似的代码外观。这里有一些例子

第1部分

function onStart()
{
    $x = MyModel1::where('myColumn', 'myValue')->first();
    // lots of stuff using $x functions
    $this['viewData'] = $x->getViewData();
}
第2部分

function onStart()
{
    $x = MyModel2::where('myColumn', 'myValue')->first();
    // lots of stuff using $x functions
    $this['viewData'] = $x->getViewData();
}
MyModel1和MyModel2都实现了相同的接口,因此它们具有相同的功能


我的问题是,我应该把类似的代码放在哪里?我可以把它放在一个插件中,但感觉不正确。我可以创建一个基类,让partials调用parent方法,但这不意味着修改vendor文件夹中的代码吗?

如果您真的需要管理代码,您可以创建组件并将代码添加到那里,因为它们很容易附加到其他页面(缺点是您需要创建一个插件)

您可以在
onRun
方法中编写代码

而不是直接将变量分配给
这个
,你需要像这样分配它们

$this->page['var'] = 'value';

现在它的工作原理与您的相同。

我只觉得它“不对”,因为它使我的插件依赖于另一个插件。这感觉就像是进入依赖地狱的第一步。为什么你需要其他插件?你可以将该插件专用于此内容,而不要将该插件用于其他内容,因为几乎所有主题都依赖于商店、博客、静态页面等中的一些插件(依赖意味着我们正在重用代码),如果我们处理得当,你就不用担心了。