Страница 1 из 1

Call to a member function __toString()

СообщениеДобавлено: 29 май 2013, 22:43
guyasyou
У юзера вылазит эта ошибка при покупке товара.
Код: Выделить всё
Call to a member function __toString() on a non-object in /home/c/cl11542/embroideres/public_html/packages/core_commerce/controllers/checkout/shipping/address.php on line 22

Мой вопрос относительно __toString(), корректно ли название функции с этими "__"?

Re: Call to a member function __toString()

СообщениеДобавлено: 30 май 2013, 00:06
vbnm
может вы скажите каким магазином пользуетесь, для начала?

Re: Call to a member function __toString()

СообщениеДобавлено: 30 май 2013, 12:10
Count_Raven
vbnm писал(а):может вы скажите каким магазином пользуетесь, для начала?

Да он вроде один пока для Concrete5.

Re: Call to a member function __toString()

СообщениеДобавлено: 30 май 2013, 12:13
Count_Raven
guyasyou писал(а):У юзера вылазит эта ошибка при покупке товара.
Код: Выделить всё
Call to a member function __toString() on a non-object in /home/c/cl11542/embroideres/public_html/packages/core_commerce/controllers/checkout/shipping/address.php on line 22

Мой вопрос относительно __toString(), корректно ли название функции с этими "__"?

1. Посмотрите что у вас в adress.php на строке 22. Видимо у вас там не объект и нельзя у него вызвать метод __toString().
2. Методы, начинающиеся с __ обычно зарезервированы в PHP как "магические функции". Если вы хотите назвать свою функцию таким образом, но она не будет "магической", то лучше так не делать. Подробнее тут
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку

Re: Call to a member function __toString()

СообщениеДобавлено: 30 май 2013, 12:33
guyasyou
ну в adress.php вызывается функция __toString(). ну раз синтакцис реален такой, то буду дампать...

Re: Call to a member function __toString()

СообщениеДобавлено: 30 май 2013, 13:33
Count_Raven
guyasyou писал(а):ну в adress.php вызывается функция __toString(). ну раз синтакцис реален такой, то буду дампать...

Дело в том, у чего она вызывается?
Она вызывается у "не объекта". Т. е. у чего-то, у чего не может быть вызвана, у чего-то, у чего ее не существует. Возможно у пустой/не инициализированной переменной.

Re: Call to a member function __toString()

СообщениеДобавлено: 30 май 2013, 15:57
guyasyou
переменная->__toString() вот что там было, я знаю про ошибку, меня интересовал лишь вопрос по синтаксису __

Re: Call to a member function __toString()

СообщениеДобавлено: 31 май 2013, 00:45
vbnm
Count_Raven писал(а):
vbnm писал(а):может вы скажите каким магазином пользуетесь, для начала?

Да он вроде один пока для Concrete5.


дык я опен картом интересуюсь )))
кто его знает, мож кто еще его привинчивает

Re: Call to a member function __toString()

СообщениеДобавлено: 31 май 2013, 09:42
Count_Raven
guyasyou писал(а):переменная->__toString() вот что там было, я знаю про ошибку, меня интересовал лишь вопрос по синтаксису __

Вызывать магические функции напрямую вообще-то не очень обычно. Эта функция будет вызвана при обращении к этой переменной к примеру
echo переменная.

Эта функция создается для объекта (любой сущности), когда нужно вывести его строковое представление. Она может просто выдавать "Хрен", ну это так, к примеру. А может выдать любое другое представление.
Например, у меня есть объект "автомобиль", пусть это будет Auto.
Делаем так
Код: Выделить всё
$a = new Auto();
$a->set('Color', 'red');
$a->set('number', '12345');
echo $a;

Если у класса Auto определена магическая функция __toString, то она может быть выведет мне номер, а может цвет, как разработчик определит то, что для данного объекта представляет строковый вид. Т. е. как обработать попытку вывести объект обычным текстом.