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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возращаемое конструктором значение 
:(
    Опции темы
BuShaRt
Дата 14.2.2012, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

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



Есть объект, на пример, Дом. В консутрукторе по id инициализируеются все его параметры из базы данных, нужно просто написать
Код

$house  = new Model_House($id);


Если в базе существует информация об этом объекте, то все ок, но а если нету? В таком случае я хочу, чтоб консутрктор объекта вернул мне null или false. Как это сделать на уровне модели (т.е. контрсуктора)? Просто return null в __construct не работает :(
PM MAIL   Вверх
krundetz
Дата 14.2.2012, 12:48 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



BuShaRt, можно сделать так:
Код

class Model_House {
    public function __construct($param ...) {
        //реализация конструктора
    }
    public static function findByID($id) {
        //реализация поиска обьекта в базе
        if($found) {
            return new Model_House($param ...);
        } else {
            return null;
        }
    }
}

почитай также про ActiveRecord

А можно просто выкинуть исключение в конструкторе и если оно произошло инициировать переменную null
примерно так:

Код

try {
    $house  = new Model_House($id);
} catch(Exception $e) {
    $house = null;
}


Но первый вариант ИМХО лучше.

Это сообщение отредактировал(а) krundetz - 14.2.2012, 12:54


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
solenko
Дата 14.2.2012, 18:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

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



Цитата(BuShaRt @  14.2.2012,  11:31 Найти цитируемый пост)
В таком случае я хочу, чтоб консутрктор объекта вернул мне null или false. Как это сделать на уровне модели (т.е. контрсуктора)? Просто return null в __construct не работает :( 

Невозможно в принципе. Конструктор всегда возвращает ссылку на созданный объект -- hardcoded in php sources ). Варианты корректной реализации озвучил krundetz.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.5216 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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