У вас неверное понимание наследования между классами.
Наследование протекает только в одну сторону, вниз.
если Myodel extends Submodel
ваш $this->mymodel->test()
будет работать, но это не имеет смысла, так как подчиненные (дочерние) объекты должны наследоваться от родительских объектов, а не наоборот.
В качестве аналогии вы не должны смотреть на ребенка и говорить родителю: «Вы похожи на своего ребенка», потому что именно ребенок является частичным представлением родителя.
вам нужно понимать слово extends
буквально, вы буквально «расширяете» функциональность родителя.
===================
Один из способов, которым, я полагаю, можно добиться этого, является создание функций-призраков, которые просто загружают правильную модель и вызывают функцию этой модели (хотя я не рекомендую этого, поскольку это может привести к путанице при отладке.
по вашему примеру
<?php
class Mymodel extends Model
{
function test() {
$this->load->model('submodel');
$this->submodel->test();
}
}
Суб
<?php
class Submodel extends Model
{
function test() { do something.. }
}
НО, опять же, если вы собираетесь использовать чистый код, это НЕ тот путь, который вы можете попробовать, соблюсти наследование и проектировать свои данные с учетом этого.