PHP/MySQL | Заполнение свойства родителя в потомке

DELETED
Автор
21 августа 2019, в 12:20
Delete
<?php
class BaseModel
{
// модель для класса BaseClass
}
class Model extends BaseModel
{
// модель для класса Class
}
class BaseClass
{
protected $mObj;
public function __construct($route)
{
parent::__construct($route);
$this->mObj = new BaseModel();
}
}
class Class extends BaseClass
{
public function __construct($route)
{
parent::__construct($route);
$this->mObj = new Model();
}
}
код примерный-схематический, дело в том, что всё работает правильно при заполнении свойства mObj и в родительском классе и в его потомке, все данные из моделей берутся правильно, сначала для базовой потом для дочерней, НО можно ли так использовать одно свойство для заполнения в родителях и в наследниках, разве не должно быть конфликта? Или свойство превращаеться в массив объектов при позднем "ленивом" его заполненнии?
________
посл. ред. 21.08.2019 в 12:22; всего 1 раз(а); by Вероломство
Model при одноименных методах всегда будет заменять методы BaseModel. Но в php 7 надо что бы совпадали типы вроде global private protected? в php 5 не помню
________
посл. ред. 21.08.2019 в 12:39; всего 1 раз(а); by Сибирский
________
посл. ред. 21.08.2019 в 12:39; всего 1 раз(а); by Сибирский

DELETED
Автор
21 августа 2019, в 12:42
Delete
Сибирский (21.08.2019 в 12:38)
Model при одноименных методах всегда будет заменять методы BaseModel. Но в php 7 надо что бы совпадали типы вроде global private protected? в php 5 не помню
Model при одноименных методах всегда будет заменять методы BaseModel. Но в php 7 надо что бы совпадали типы вроде global private protected? в php 5 не помню
а если таких нет, то будут просто объединяться все методы в одном свойстве?
просто мне так и нужно, каждый контроллер наследуется от базового и чтобы в нём были методы его модели и базовой модели
я так понимаю просто нужно чтобы в какой-то из моделей не было одноимённого метода с базовой?
________
посл. ред. 21.08.2019 в 12:43; всего 1 раз(а); by Вероломство
Вероломство, да, будут обьединяться и не только методы но и переменные даже если они будут в трейтах

DELETED
Автор
21 августа 2019, в 12:49
Delete
Сибирский (21.08.2019 в 12:44)
Вероломство, да, будут обьединяться и не только методы но и переменные даже если они будут в трейтах
Вероломство, да, будут обьединяться и не только методы но и переменные даже если они будут в трейтах
тогда мне можно упростить наследование и модель не наследовать от базовой, потому что в свойстве mObj уже доступны методы базовой модели, о то я два раза доступ к ним даю - перестраховываюсь, нужно в обычных моделях просто подключение к БД и всё


DELETED
Автор
21 августа 2019, в 12:53
Delete
<?php
class BaseModel
{
// модель для класса BaseClass
}
class Model extends BaseModel
{
// модель для класса Class
}
class BaseClass
{
protected $mObj;
public function __construct($route)
{
parent::__construct($route);
}
// ДОСТУПНЫ ЛИ ТУТ ТЕПЕРЬ МЕТОДЫ BaseModel
}
class Class extends BaseClass
{
public function __construct($route)
{
parent::__construct($route);
$this->mObj = new Model();
}
}
так будет работать?
или методы базовой модели будут работать только в Class?
________
посл. ред. 21.08.2019 в 12:54; всего 1 раз(а); by Вероломство
Вероломство, тут никак не связаны классы если я ничего не пропустил, но здесь ты бы посмотрел интерфейсы или абстрактные классы, потому что слишком трудно прослеживать зависимости в такой архитектуре, потом сам будешь путаться.

DELETED
Автор
21 августа 2019, в 13:09
Delete
Сибирский (21.08.2019 в 13:01)
Вероломство, тут никак не связаны классы если я ничего не пропустил, но здесь ты бы посмотрел интерфейсы или абстрактные классы, потому что слишком трудно прослеживать зависимости в такой архитектуре, потом сам будешь путаться.
Вероломство, тут никак не связаны классы если я ничего не пропустил, но здесь ты бы посмотрел интерфейсы или абстрактные классы, потому что слишком трудно прослеживать зависимости в такой архитектуре, потом сам будешь путаться.
тут заполняется свойство родителя в наследнике, будут ли в родителе работать методы базовой модели (она наследуется моделью, экземпляр которой создаётся в наследнике)
Вероломство, тут важно на основе чего ты создашь экземпляр
$ex = new MyClass();
или
$ex = new BaseClass();
$ex = new MyClass();
или
$ex = new BaseClass();

DELETED
Автор
21 августа 2019, в 13:23
Delete
Сибирский (21.08.2019 в 13:18)
Вероломство, тут важно на основе чего ты создашь экземпляр
$ex = new MyClass();
или
$ex = new BaseClass();
Вероломство, тут важно на основе чего ты создашь экземпляр
$ex = new MyClass();
или
$ex = new BaseClass();
пост 6: экземпляр модели создаётся в потомке и заполняет свойство родителя, модель наследует базовую модель (имеет доступ к её методам), будут ли эти методы видны в родителе класса (в базовом классе)
или они видны только после создания?
и будут видны в методах родителя так же, если эти методы используются в потомке после создания экземпляра?
Стр.: 1, 2