Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Статические методы в моделях


Автор: Axiom 21.4.2014, 17:54
Приветствую!

Хотелось бы спросить совета как поступить в такой ситуации:

Есть контроллер RegController. Соответсвенно его модель Reg:

Код

class RegController extends Controller {

   public function __construct() {

        $this->model = new Reg();

   }

   public function addUser() {

        $this->model->insertNewUser();
   }

   public function activate() {

        $this->model->activateUser();
   }
}

class Reg extends Model {

    public function insertNewUser() {} // Добавление нового пользователя в базу

    public function activateUser() {} // Активация аккаунта

}

class Model extends Db {}

class Db {
    public $dbhandle;

    public function __construct() {
       
       $this->dbhandle = new PDO();
    }
}


В данном случае, существует такая проблема. В контроллере создается объект модели ($this->model = new Reg()). И соответственно, этот объект содержит в себе два метода: insertNewUser() и activateUser().
Но одновременно эти методы никогда не используются.
Имеет ли смысл в таком случае, делать методы модели статическими, чтобы можно было обращаться только к необходимому методу (Reg::insertNewUser()). Если правильно понимаю, это избавит от потребления лишней памяти, но во-первых, добавит немного избыточности кода, т.к. в каджом методе придется доставать из реестра бд_хэндл (Registry::get('db')):

Код

public function insertNewUser() {

     $dbh = Registry::get('db');

     // $dbh->insert();

}


во-вторых, на сколько знаю, не "этично" вот так использовать статические методы.

Подкажите, как лучше поступить.

Автор: Ramzzes 26.4.2014, 19:11
Экономия тут будет на копейках, а потом сами путаться начнете, где статик, а где требуется экземпляр.
Я тоже когда свой движок писать начинал, пытался заоптимизировать всё по самые небалуйся, а он начал прилично разрастаться, оказалось что такая экономия боком выходит при расширяемости функционала, многое пришлось переписать.

Автор: Axiom 27.4.2014, 14:57
Цитата(Ramzzes @  26.4.2014,  19:11 Найти цитируемый пост)
такая экономия боком выходит при расширяемости функционала


Пожалуй, пришел к той же мысли. С одной стороны ООП "развязывает" руки засчет своей абсткрактности, а с другой ограничивает. Думаю, такого рода проблемы можно решить при процедурном подходе, но опять же, ничего идеального не существует. =)

В любом случае, спасибо за помощь ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)