2010-10-28 2 views
0

У меня есть многостраничная форма с некоторыми текстовыми полями. Когда вы заполняете форму и нажимаете дальше, форма сохраняет значения в объекте. Когда вы нажимаете на подставку, она перезагружает эти значения в текстовых полях. Это прекрасно работает.php default value и non-object

Но когда вы первоначально загружаете форму, объект не создается, поэтому загружать значения не нужно, и я получаю вызов функции-члена при ошибке, отличной от объекта.

пример:

<inputfield value='$object->getValue()'> 

есть способ, чтобы сказать ему, что, когда объект не существует, чтобы просто оставить его пустым?

+0

Можете ли вы показать весь код? Где инициализация вашего объекта? – pltvs

ответ

3

Вы можете сделать следующее перед использованием объекта:

// All methods called on this object return an empty string. 
class EmptyObject { 
    public function __call($name, $args) { 
     return ''; 
    } 
} 

// Use fake object if $object is not defined correctly. 
if (!is_object($object)) { 
    $object = new EmptyObject(); 
} 

__call - это magic method в PHP. Он вызывается каждый раз, когда на объект вызывается неопределенный метод.

+0

пока это работает, хороший трюк! – dazz

0

Существует is_object метод:

if (is_object($object)){ 
    // it is there 
} 

Таким образом, вы можете проверить на нем что-то вроде этого:

<inputfield value='<?php is_object(@$object) ? $object->getValue() : '';?>'> 
1

также метод Исеть:

if(isset($object)){ 
    //it is there 
} 
1

Попробуйте это:

$output = "<inputfield value='". (isset($object) ? $object->getValue() : '') . "'>";