Electrica Справочно: по наследованию, переопределению, расширению.
Да, можно создать дочерний класс - пример, что, видимо, Вам и нужно (т.е. наследование и переопределение). То же для trait - пример.
Вот пример наследования класса стороннего плагина без переопределения методов (на примере контроллера RainLab\User\Controllers\Users в бакенде):
<?php namespace Linkonoid\Plugin\Controllers;
use BackendMenu;
use RainLab\User\Controllers\Users as RainLabUsers;
class Users extends RainLabUsers
{
public $requiredPermissions = ['linkonoid.plugin.access_users'];
public function __construct()
{
parent::__construct();
$this->addViewPath($this->guessViewPathFrom(RainLabUsers::class));
$this->viewPath = array_reverse($this->viewPath);
BackendMenu::setContext('Linkonoid.Plugin', 'main-menu-item-plugin', 'side-menu-item-plugin-users');
}
}
По поводу расширения (стандартных классов и сторонних плагинов), т.е. внедрения новых переменных или методов в существующие классы из Ваших плагинов средствами OctoberCMS (переопределить не получится), очень кратко (собственно, это практически и всё):
public function boot()
{
\RainLab\User\Models\User::extend(function($obj) {
$obj->addDynamicProperty('newProperty', null); // Добавляет новую переменную
$obj->addDynamicMethod('newMethod', function () use ($obj) { // Добавляет метод
// Тело Вашего нового метода
});
});
}