В __toString () нет ключа $!
Также __toString () не принимает никаких параметров!
Проверьте это с помощью:
public function __toString()
{
return json_encode($this->vars);
}
После вашего редактирования я понял, что ваша проблема не в методе __toString () (вы можете просто удалить его, поскольку вы его не используете). Выполнение echo $this->name
- это правильный способ показать переменные изнутри вашего представления в вашем случае, однако, если вы хотите просто сделать echo $name
, могу ли я предложить другой подход?
function View($view)
{
if (is_file($view) === true)
{
$arguments = array_slice(func_get_args(), 1);
foreach ($arguments as $argument)
{
if (is_array($argument) === true)
{
extract($argument, EXTR_OVERWRITE);
}
}
require($view);
}
}
Используйте функцию просмотра следующим образом:
$data = array
(
'name' => 'karl',
);
View('/path/to/your/name_view.phtml', $data);
Теперь он должен работать просто, выполнив echo $name;
, вы можете адаптировать его к вашему классу View, если хотите. Если это не сработает, попробуйте изменить расширение представления name_view на .php
.