2014-09-05 2 views
0

У меня есть что-то вроде этогоГлобальные переменные в классах Laravel 4

class Unilevel { 

    public $contador = 2; 

    public static function listarLevels($user_id){ 
     if($contador <= 5){ 
      echo '<h1>Nivel '.$contador.'</h1>'; 

      $user = DB::table('matrices')->where('id_user', $user_id)->first(); 

      $actual_user = DB::table('users')->where('id', $user->id_user)->first(); 
      echo $actual_user->username.'<br>'; 
     } 

     $contador++; 
    } 
} 

Функция не работает, но если я ставлю переменную $ Контадор внутри listarLevels работает , которая является проблемой? Спасибо

ответ

3

Вот как работают классы в PHP.

$contador Для вызова внутри функции, когда вы объявили его как свойство класса, можно использовать $this->contador

Это может быть полезно прочитать руководство по объектно-ориентированному программированию в PHP, чтобы получить больше знакомы с этим перед погружением в Ларавель. http://php.net/manual/en/language.oop5.php

+0

Да, но я знаю, но, например, это не работает: contador; \t $ this-> contador = 2; $ user = DB :: table ('matrices') -> где ('id_user', $ user_id) -> first(); $ actual_user = DB :: table ('users') -> где ('id', $ user-> id_user) -> first(); echo $ actual_user-> имя пользователя. '
'; , если ($ пользователю) { \t \t \t, если ($ user-> left_direct) { \t \t \t listarLevels ($ user-> left_direct); \t \t} \t} еще { \t \t эхо 'Ninguno'; \t} \t} \t } ?> – Roberto

+0

Это потому, что это статическая функция. Статические функции не имеют доступа к '$ this'. – user3158900

+0

Если вы сделаете это 'public static $ contador = 1;', то в вашей статической функции вы можете «echo static :: $ contador;», и она должна работать. – user3158900

0

Вы не можете получить доступ к своим нестационарным свойствам класса в статических методах.

Попробуйте это.

class Unilevel { 

    public static $contador = 2; 

    public static function listarLevels($user_id){ 
      //self::$contador = 4; 
    } 
} 

Если ваш метод статичен, вам также необходимо сделать ваше свойство статичным. Их немного других способов тоже, как создать экземпляр объекта класса. Узнайте больше о static в PHP.

Смежные вопросы