Xwab
Форумыnavigate_nextПрограммирование на PHP

Говнокод?
Ну так как?
Да, уг: 25%
Нет, норм: 40%
Да хз, я не фига не понял: 34%
Опрошено: 32
Сообщения
Popelis


<?php
class a
{
  public function method ()
  {
    $a = new B ($this);
  }
}

class b
{
    public function __construct (a $a)
    {
      // Манипуляции с членами a
    }
}
?>

добавлено спустя 2 минуты:
Внутри класса A создается объект класса B, которому передается текущий объект класса A ($this)


__________
посл.ред. 16 Апр 2012, 17:39; всего 1 раз 16 Апр 2012, 17:25
mixlion

Зачем?

16 Апр 2012, 17:27
Popelis

mixlion, долгая история

16 Апр 2012, 17:30
Afictox

Говнокод - это когда тысячи echo, сотни лишних запросов к базе и нет отступов. А тут норм

16 Апр 2012, 17:35
Gemorroj

почему не сделать a extends b?

16 Апр 2012, 17:59
Popelis

Gemorroj, потому что A и B выполняют совсем разные задачи. И унаследовать их друг от друга невозможно.
Но тем не менее, B должен иметь доступ к объектам A.

16 Апр 2012, 18:43
Gemorroj

проголосовал норм.) в приведенном примере, просто код довольно бессмысленный, но по сути, мне кажется, ничего криминального нету.

16 Апр 2012, 19:25
Akdmeh

Я тоже так думаю. Если это оправдано удобностью и возможностью тестировать - то возможно, это ведь только каркас, непонятно, что, собственно, должен делать код.

16 Апр 2012, 19:37
Popelis

Спасибо.
"оправдано удобностью" - да, оправдано
добавлено спустя 3 минуты:
/**
     * @param $model object Объект текущей модели
     */
    public function __construct (Model $model)
    {
        $params = get_object_vars ($model);
       
        // Копируем члены из модели сюда и выполняем правила валидации
        foreach ($params as $key => $value)
        {
            // Копируем
            $this->{$key} = $value;
           
            // Выполняем
            $method = 'validation' . ucfirst ($key);
            if (method_exists ($this, $method))
                $this->$method ();
        }
    }

16 Апр 2012, 19:49
Nnz2

Хочешь повыпендриваться с созданием объектов? Юзай фабрику..

16 Апр 2012, 21:14
Ответить на тему