[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача массива в другой класс
Krevedko
Собсно у меня такая ситуация. Есть класс, который основной и должен выполняться на всех страницах. Собсно я его сделал родительским. На нем выполняются какие-то там условия и собирается массив $data.
Далее в классе, который наследует его, я пытаюсь получить этот массив и у меня не выходит.
Пытаюсь как....объявляю $data статическим и в дочернем классе обращаюсь через Common_Basic::$data (родительский класс называется Common_Basic, как все уже поняли). Но нифига не работает, хотя ошибок тоже не выдает.
В статических этих фигнях я дуб дубом. Раньше всегда работал с $this. А тут блин фреймворк, тут везде это самое.... blink.gif



Спустя 4 минуты, 51 секунда (28.07.2011 - 00:50) Invis1ble написал(а):
Krevedko
а ты попробуй parent::$data

Спустя 3 минуты, 16 секунд (28.07.2011 - 00:53) Krevedko написал(а):
чего написать ?
$data = parent::$data;
print_r($data);

массив не выдает (((

Спустя 9 минут, 36 секунд (28.07.2011 - 01:03) Invis1ble написал(а):
Krevedko
<?php

class
A {
protected static $data = array('a', 'b', 'c');
}

class B extends A {
public static function getData() {
return parent::$data;
}
}


print_r(B::getData()); // Array ( [0] => a [1] => b [2] => c )

Вроде работает... :huh:

Спустя 15 минут, 11 секунд (28.07.2011 - 01:18) Krevedko написал(а):
как почеловечески заставить работать ? перед $data поставить везде self:: ?
или как-то в одном месте можно ?


class Common_Basic extends Controller
{
protected static $data = array();
public function before()
{
$auth = Auth::instance();

if($auth->logged_in() != 0)
{
$data['left_enter'] = View::factory('left_entered');
}
else
{
if(isset($_POST['enter']))
{
$login = Arr::get($_POST, 'login', '');
$password = Arr::get($_POST, 'password', '');

if($auth->login($login, $password))
{
$data['error'] = '';
Request::initial()->redirect('');
}
else
$data['error'] = 'Неверный ввод';
}
else
$data['error'] = '';

$data['left_enter'] = View::factory('left_form', $data);
}

$model = Model::factory('main');
$data['left_menu'] = $model->getCategory();
}


public function action_logout()
{
$auth = Auth::instance();
$auth->logout();
Request::initial()->redirect('');
}
}


Спустя 2 минуты, 6 секунд (28.07.2011 - 01:20) Krevedko написал(а):
внизу дописал
self::$data = $data;

заработало вроде. тупо или норм ?

Спустя 22 минуты, 37 секунд (28.07.2011 - 01:43) Invis1ble написал(а):
Krevedko
Цитата
внизу дописал
self::$data = $data;

В Common_Basic::before() ?
А если метод Common_Basic::before() не вызовется, то по идее массив будет непроинициализирован...

Спустя 1 минута, 32 секунды (28.07.2011 - 01:44) Krevedko написал(а):
этот метод вызывается всегда самым первым автоматом в кохане как я понял.
по крайней мере я его нигде не вызываю, он стартует автоматом. как констракт прям )

Спустя 50 секунд (28.07.2011 - 01:45) Invis1ble написал(а):
Krevedko
а, ну если полюбасу вызывается - то вроде норм все

Спустя 2 минуты, 10 секунд (28.07.2011 - 01:47) Invis1ble написал(а):
Krevedko
Цитата
этот метод вызывается всегда самым первым автоматом в кохане как я понял.
по крайней мере я его нигде не вызываю, он стартует автоматом. как констракт прям )

наверное, где-то в одном из предков в конструкторе вызывается

Спустя 1 минута, 16 секунд (28.07.2011 - 01:49) Krevedko написал(а):
ну оке. заплюсовал. спасибо.

Спустя 47 секунд (28.07.2011 - 01:49) Invis1ble написал(а):
пожалуйста )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.