Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Изменение глобальных переменных класса.
http://forum.kohanaframework.su/viewtopic.php?f=31&t=372
Страница 1 из 1

Автор:  Serg [ 11 сен 2012, 15:49 ]
Заголовок сообщения:  Изменение глобальных переменных класса.

Здравствуйте!

У меня такая ситуация, есть основной контролер "Controller_Common":
Код:
abstract class Controller_Common extends Controller_Template {
 
    public $template = 'main';
    public $pers = Array ();

    public function before()
    {
        parent::before();
        View::set_global('title', '...');            
        View::set_global('description', '...');
         
        $user = Auth::instance()->get_user();
        $this->pers = Model::factory('Pers')->get_pers($user->id);
        View::set_global('pers', $this->pers);
    }
}

И есть второй контролер, который наследует Common, в котором иногда нужно изменять значения массива $pers:
Код:
class Controller_Testc extends Controller_Common {

    public function action_index()
    {
       
    }
 
    public function action_testm()
    {
        $content = View::factory('/_views_/_views_');

        $this->pers['pole'] + 15;

        $this->template->content = $content;
    }
}

Ну и потом в каком то views перебирается этот массив.

Но так он не хочет изменять данные, можно ли вообще это сделать?

Автор:  evgentus [ 11 сен 2012, 15:56 ]
Заголовок сообщения:  Re: Изменение глобальных переменных класса.

дак может $this->pers['pole'] += 15;

Автор:  Serg [ 11 сен 2012, 16:05 ]
Заголовок сообщения:  Re: Изменение глобальных переменных класса.

evgentus писал(а):
дак может $this->pers['pole'] += 15;

Нет, так тоже не работает(

Я уже и метот для Common писал:
Код:
public function change_pers ($param, $value)
    {
        $this->pers['' . $param . ''] = $value;
    }

Но так тоже не работает

Автор:  Serg [ 11 сен 2012, 16:15 ]
Заголовок сообщения:  Re: Изменение глобальных переменных класса.

Получилось изменить данные когда после изменения значения, снова объявляешь $pers глобальной переменной, в общем так:
Код:
$this->pers['level'] = 15;
        View::set_global('pers', $this->pers);

Получается когда создаешь глобальную переменную, она как то дублируется и работаешь уже с ней.

Это правильно так изменять данные?:)

Автор:  mamahtehok [ 11 сен 2012, 17:35 ]
Заголовок сообщения:  Re: Изменение глобальных переменных класса.

замените в before контроллера common
Код:
View::set_global('pers', $this->pers); 

на
Код:
View::bind_global('pers', $this->pers);


тогда
Код:
$this->pers[] =$value;
будет работать.

Автор:  Serg [ 11 сен 2012, 18:06 ]
Заголовок сообщения:  Re: Изменение глобальных переменных класса.

Спасибо большое, забыл что биндлить можно)

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/