Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статические методы в моделях, MVC 
:(
    Опции темы
Axiom
Дата 21.4.2014, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2011

Репутация: нет
Всего: нет



Приветствую!

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

Есть контроллер 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();

}


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

Подкажите, как лучше поступить.
PM MAIL   Вверх
Ramzzes
Дата 26.4.2014, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 2
Регистрация: 26.4.2014

Репутация: нет
Всего: нет



Экономия тут будет на копейках, а потом сами путаться начнете, где статик, а где требуется экземпляр.
Я тоже когда свой движок писать начинал, пытался заоптимизировать всё по самые небалуйся, а он начал прилично разрастаться, оказалось что такая экономия боком выходит при расширяемости функционала, многое пришлось переписать.
PM MAIL WWW ICQ   Вверх
Axiom
Дата 27.4.2014, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2011

Репутация: нет
Всего: нет



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


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

В любом случае, спасибо за помощь ;)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1046 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.