Забыли пароль?
Запросите новый здесь.

Автор темы: Zaxap
ID темы: 2419
Информация:
Тема содержит 5 сообщения, была просмотрена 3147 раз.
Просмотр темы
PHP-Fusion Russia » Веб-разработка » PHP
 Распечатать тему
$one->two(); in function(){};
Zaxap
Здравствуйте, у меня есть одна проблема... не знал даже, как назвать тему... ну перейдем сразу к сути:

Имеется файл с классом (мини-шаблонизатор)... ООП, и все такое прочее:
Загрузить источник  GeSHi: PHP
  1. /* class.php */
  2.  
  3. class MyClass
  4. {
  5. private $_var = array();
  6.  
  7. public function set($name, $value)
  8. {
  9. $this->_var[$name] = $value;
  10. }
  11.  
  12. //...some_code...
  13.  
  14. }
Добавлено за 0.049 секунд, используя GeSHi 1.0.8.10


Имеется файл, в котором сделана проверка ошибок, и выглядит оно так:
/* file.php */
require_once 'class.php';

//...some_code...

if($result1){ $view->set('good', $locale['1']); $err = true; }
if($resultN){ $view->set('better', $locale['N']); $err = true; }

//...some_code...

if($err = false)
{

//...do_something...

}


Подумал, что лучше для условия сделать функцию (не знаю, как иначе):
Загрузить источник  GeSHi: PHP
  1.  
  2. //...some_code...
  3.  
  4. function error($one, $two){
  5. $view->set($one, $locale[$two]);
  6. $err = true;
  7. }
  8.  
  9. if($result1) error('good', '1');
Добавлено за 0.035 секунд, используя GeSHi 1.0.8.10


В итоге мы имеем вот это:
Fatal error: Call to a member function set() on a non-object



Как это исправить? И...можно ли как-то иначе проверить...подобное?
Заранее спасибо :)
Зло не дремлет, а я добрый...
 
Polarfox
$this-> же вместо того что у тебя?
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме

PolarLab - вход для подопытных
 
Web
Zaxap
у меня там идет еще
$view = new View('/');

а $this в *.tpl файле шаблона:
echo $this->error;

а тут вот что:
$view->set('error', 'FatalError1');
Изменил(а) Zaxap, 18.01.2015 12:25
Зло не дремлет, а я добрый...
 
Razor
Вообще не понял на какие ошибки хочешь проверить, а вообще да, у тебя там переменная $view->set($one, $locale[$two]), либо сначала инициализируй объект класса через $view = new MyClass();, а потом уже используй вне класса, либо если ты используешь внутри класса, то через оператор $this, обращаемся к внутренним методам класса.
А насчет проверки на ошибки, я не понял на какие ошибки хочешь проверить...

Объединено 18.01.2015 12:19:
Zaxap написал:

у меня там идет еще
$view = new View('/');

а $this в *.tpl файле шаблона:
echo $this->error;

а тут вот что:
$view->set('error', 'FatalError1');

Я так понял, ты хочешь обрабатывать какие-то ошибки при отправке например post запросов, в случае незаполненной формы и.т.п.
Тебе нужен либо отдельный обработчик ошибок типа error handler, либо просто массив $this->errors[] который ты будешь наполнять ошибками, т.е. смотри, допустим:
Скачать исходники  Код

$this->errors[
'type' => 'error',
'description' => 'какая нибудь ошибка'
];





И отправляешь этот массив ошибок в свой шаблонизатор
$view->set('errors' , $this->errors);
А потом уже в шаблоне их выводишь, например, или обрабатываешь где нибудь в контроллере или как там у тебя устроено.
Скачать исходники  Код

<ul>
  <?php foreach ($this->errors as $error) { ?>
    <li>
       <?=$error['description']?>
    </li>
  <?php } ?>
</ul>




[/quote]
Изменил(а) Razor, 18.01.2015 12:20
Sr. Software developer
plesk.com
x1
 
Rush
не стоит мешать процедурный код с объектно-ориентированным
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Warning: strftime() [function.strftime]/ Как исправить?  →  Ошибки, баги 11 / 2525 16.02.2013 15:52
Function eregi() is deprecated  →  PHP 6 / 3532 02.01.2013 23:48
Топ 5 пользователей форума
Alex Alex (1,237)   Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)