@phpcoder81

Можно ли вот так разделять класс?

Мужики, строго не критикуйте) Вопрос исключительно по грамматике.
Есть класс, в нем два метода. И я вдруг решил разделить методы по разным файлам. Не спрашивайте "зачем мне это". Меня интересует реализация!!! Верно ли я сделал в целом?
class A{
  public $val = 10;
  public function method1(){
    $m2 = new B();
    return $m2->method2();
  }
}

class B extends A{
  public function method2(){
    return $this->val + 1;
  }
}

$a = new A();
echo $a->method1();
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
hack504
@hack504
Если нужно работать в рамках одного экземпляра класса то можно попробовать так
class A{
  public $val = 10;
  public function method1(){
    $m2 = new B($this);
    return $m2->method2();
  }
}

class B {
  public function __construct($obj) {$this->obj = $obj;}
  public function method2(){
    return $this->obj->val + 1;
  }
}

$a = new A();
echo $a->method1();

Правда все методы и свойства класса должны быть только публичными, но судя по всему это не критично.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@ipokos
Работать это будет. Если опишите в чем цель, возможно будет более адекватное решение. (например трейты)
Но если вы "разделяете" класс, т.к. в нем много методов и вы хотите их структурировать, это значит изначально что-то пошло не так.
Ответ написан
Впринципе, можно. Но то, что класс А знает о своем наследнике, классе В - пахнет оооочень стрёмно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы