php is_object()

программирование php ООП mvc OOP

вот таким вот образом пытаюсь проверить существование объекта:
if( is_object($controller) == FALSE )
{
echo 'no object<br />';
$path = CONTROLLERS.$contr.EXT;
if( file_exists($path) )
{
require $path;
$controller = new $contr();
}
}
else echo 'is object<br />';

всегда получаю 'not object' от сюда и вопрос как проверить если объект уже создан??
и как лучше сохранять его созданым между запросами....
дело в том что ( в MVC ) с каждым запосом один и тотже объект создаеться заново и его данные утрачиваються...
благодарю

Примечание:
щас вот понял что 'not object' я получаю потомучто скрипт перезагружаеться и объекта попросту нет....
ну вопрос "как лучше сохранять его созданым между запросами...." остаеться актуальным

Примечание:
gregory: куда этот код поставить??index?

Примечание:
gregory:
возможно вы правы и в самом деле есть проблема в архитектуре кода....так я выложу часть кода где впервые столкнулся с проблемой передачи данных.....
основной контролер:
class base
{
function __construct()
{
$this->view = new View();
}
}


class profile extends base
{
function __construct()
{
parent::__construct();

require MODELS.'profile'.EXT;
$this->model = new Model();
}


function login()
{
if( $this->model->login() === TRUE )
{
$this->data = $this->model->data;
}
else $this->view->render('profile/login');
}

}


а вот модель профайла
class profile
{
public $data = array();
function login()
{
if( //проверка авторизации бла бла бла )
$this->data = mysql_fetch_assoc();
return TRUE;
else
return FALSE;
}

}

Примечание:
андрей:
>>Складывается впечатление что вы разрабатываете что то для себя, но очень сложно понять конечную цель.
>>Вы можете сформулировать что вам необходимо получить в итоге, и какие проблемы с архитектурой у вас
>>на данный момент возникают...?

да я работаю и учу все это чисто для фана....и велосипед я решил свой сделать тоже чисто для фана...готовые решения мне просто не интересно....я хочу уметь сам пускай попроще по легче зато сам....пытался я работать с codeIgniter - но мне не понравилось - мол на хавай мы пожевали...)))
так вот:
проблем у меня на самом деле не мало..я вот только-только начал во все это дело вникать....до этого обладал чисто теоретическими познаниями....
ну если в общем - моя основная цель добиться "лекой" расширяемости сайта...
во вторых: ну если без объектов то мне все придельно понятно....я и ссесиями вроде неплохо знаком и БД ну и вообще по ПХП у меня база не плохая ( ну это мое мнение:-) )

Примечание:
а вот когда речь заходит о классах - объектах так сразу стопар начинаеться......вот я и пытаюсь потихоньку картину складывать..
не без вашей помощи хех
Ответы:
static $controller = false;
// ...
 if($controller === false)  {
     if( file_exists(CONTROLLERS.$contr.EXT) )  {
            require CONTROLLERS.$contr.EXT;
            $controller = new $contr();
     } else {
        // Обработка ошибки либо подстановка $controller = new $default();
     }
 }
При следующем обращении к функции/методу $controller будет уже инициализирован
присвойте класс свойству нужного вам объекта, он будет существовать внутри класса и доступен из любого метода
Проверка на существование переменной isset http://php.net/manual/ru/function.isset.php.
is_object возвращает true, если созданная переменная является объектом.
99% PHP-скриптов работают именно таким образом (полностью перезагружая все данные по каждому запросу и завершая все процессы при окончании работы скрипта) и вам надо было начинать с осознания этого факта (поскольку невозможно написать эффективный код, не представляя себе как это всё работает). Это исторически сложившаяся архитектура, но она сильно устаревшая.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.