Далее в классе, который наследует его, я пытаюсь получить этот массив и у меня не выходит.
Пытаюсь как....объявляю $data статическим и в дочернем классе обращаюсь через Common_Basic::$data (родительский класс называется Common_Basic, как все уже поняли). Но нифига не работает, хотя ошибок тоже не выдает.
В статических этих фигнях я дуб дубом. Раньше всегда работал с $this. А тут блин фреймворк, тут везде это самое....
Спустя 4 минуты, 51 секунда (28.07.2011 - 00:50) Invis1ble написал(а):
Krevedko
а ты попробуй parent::$data
а ты попробуй parent::$data
Спустя 3 минуты, 16 секунд (28.07.2011 - 00:53) Krevedko написал(а):
чего написать ?
$data = parent::$data;
print_r($data);
массив не выдает (((
$data = parent::$data;
print_r($data);
массив не выдает (((
Спустя 9 минут, 36 секунд (28.07.2011 - 01:03) Invis1ble написал(а):
Krevedko
Вроде работает... :huh:
<?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;
заработало вроде. тупо или норм ?
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 написал(а):
пожалуйста )