За последние 24 часа нас посетили 116085 программистов и 6651 робот. Сейчас ищут 1646 программистов ...

как получить из __construct переменную?

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 21 апр 2019.

  1. Babka_Gadalka

    Babka_Gadalka Активный пользователь

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    ты понимаешь что ошибка вылезла, но не поймешь что в ней написано
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    PHP:
    1. $category = new CategoryGame();
    2. $listCategory = $category -> outTree($category->category_array, 0);
    Да, после массив идет в метод outTree, где первый аргумент пытаешься в дальнейшем использовать как ключ.
    Что за хренью ты занимаешься ?
    --- Добавлено ---
    Очевидно же вывода в методе нету o_O пишешь - не зная что пишешь
     
    _ne_scaju_ нравится это.
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    в дальнейшем аргумент нельзя использовать как ключ?
    что так нельзя делать, как правильно будет?
    Буду стараться.
     
    #28 _ne_scaju_, 23 апр 2019
    Последнее редактирование: 23 апр 2019
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Доброй ночи, нашел код, применил его, вроде все работает нормально но есть но подкатегории не выводятся.
    PHP:
    1. class CategoryGame extends Model
    2. {
    3.     public $categories = []; # публик переменная для списка всех категорий
    4.    public $categoriesTree = []; # публик переменная для списка категорий в форме дерева
    5.    public function __construct() {
    6.         parent::__construct(); # взываем родительский конструктор Model
    7.        $this -> categories = $this -> getCategories();
    8.         $this -> categoriesTree = $this -> getFullTree();
    9.     }
    10.     /*
    11.      * Список всех категорий
    12.      */
    13.     private function getCategories(){
    14.         $arr_cat = [];
    15.         $result = $this -> db -> sel("SELECT * FROM `game_categories`");
    16.         foreach($result AS $category){
    17.             $arr_cat[$category['category_id']] = $category;
    18.         }
    19.         return $arr_cat;
    20.     }
    21.     /*
    22.      * Список категорий в форме дерева
    23.      */
    24.     private function getFullTree() {
    25.         $tree = [] ;
    26.         $categories = $this -> categories;
    27.         foreach($categories as $id => &$node) {  
    28.             if(!$node['parent_id']){
    29.                 $tree[$id] = &$node ;
    30.             }else{
    31.                 $categories[$node['parent_id']]['children'][$id] = &$node ;
    32.             }
    33.         }
    34.         return $tree;
    35.     }
    36. }
    вызываю в контроллере 2 метода
    PHP:
    1.     public function indexAction()
    2.     {
    3.         # Список категорий игровых для левого меню
    4.        $category = new CategoryGame();
    5.  
    6.         $categories = $category -> categories; # список всех категорий
    7.        $tree = $category -> categoriesTree; # список категорий в форме дерева
    8. }
    и теперь пытаюсь в шаблоне вывести дерево
    HTML:
    1. <?php foreach ($tree as $key => $value): echo '<pre>';var_dump($key);echo '</pre>'; ?>
    2.   <div class="list-group-item list-group-item-action category-group-title" data-target="#collapse<?php echo $value['category_id']; ?>" data-toggle="collapse">
    3.     <h5><?php echo $value['category_name']; ?></h5>
    4.   </div>
    5.   <div class="collapse" id="collapse<?php echo $value['category_id']; ?>">
    6.     <a style="color: red;" class="list-group-item list-group-item-action" href="/category/<?php echo $value['category_id']; ?>">
    7.       { <?php echo $value['category_name']; ?> }
    8.     </a>
    9.   </div>
    10. <?php endforeach; ?>
    что могу сказать в массиве $tree храниться дерево категорий и подкатегорий, а если быть точнее то хранится уже список в виде дерева, вот этот список.
    PHP:
    1. array(7) {
    2.   [1]=>
    3.   array(5) {
    4.     ["category_id"]=>
    5.     string(1) "1"
    6.     ["parent_id"]=>
    7.     string(1) "0"
    8.     ["category_name"]=>
    9.     string(14) "WORLD OF TANKS"
    10.     ["category_status"]=>
    11.     string(1) "1"
    12.     ["children"]=>
    13.     array(4) {
    14.       [8]=>
    15.       array(4) {
    16.         ["category_id"]=>
    17.         string(1) "8"
    18.         ["parent_id"]=>
    19.         string(1) "1"
    20.         ["category_name"]=>
    21.         string(5) "wot-1"
    22.         ["category_status"]=>
    23.         string(1) "1"
    24.       }
    25.       [9]=>
    26.       array(4) {
    27.         ["category_id"]=>
    28.         string(1) "9"
    29.         ["parent_id"]=>
    30.         string(1) "1"
    31.         ["category_name"]=>
    32.         string(5) "wot-2"
    33.         ["category_status"]=>
    34.         string(1) "1"
    35.       }
    36.       [10]=>
    37.       array(4) {
    38.         ["category_id"]=>
    39.         string(2) "10"
    40.         ["parent_id"]=>
    41.         string(1) "1"
    42.         ["category_name"]=>
    43.         string(5) "wot-3"
    44.         ["category_status"]=>
    45.         string(1) "1"
    46.       }
    47.       [11]=>
    48.       array(4) {
    49.         ["category_id"]=>
    50.         string(2) "11"
    51.         ["parent_id"]=>
    52.         string(1) "1"
    53.         ["category_name"]=>
    54.         string(5) "wot-5"
    55.         ["category_status"]=>
    56.         string(1) "1"
    57.       }
    58.     }
    59.   }
    60.   [2]=>
    61.   array(5) {
    62.     ["category_id"]=>
    63.     string(1) "2"
    64.     ["parent_id"]=>
    65.     string(1) "0"
    66.     ["category_name"]=>
    67.     string(17) "WORLD OF WARSHIPS"
    68.     ["category_status"]=>
    69.     string(1) "1"
    70.     ["children"]=>
    71.     array(2) {
    72.       [18]=>
    73.       array(4) {
    74.         ["category_id"]=>
    75.         string(2) "18"
    76.         ["parent_id"]=>
    77.         string(1) "2"
    78.         ["category_name"]=>
    79.         string(9) "warship-1"
    80.         ["category_status"]=>
    81.         string(1) "1"
    82.       }
    83.       [19]=>
    84.       array(4) {
    85.         ["category_id"]=>
    86.         string(2) "19"
    87.         ["parent_id"]=>
    88.         string(1) "2"
    89.         ["category_name"]=>
    90.         string(9) "warship-2"
    91.         ["category_status"]=>
    92.         string(1) "1"
    93.       }
    94.     }
    95.   }
    96.   [3]=>
    97.   array(4) {
    98.     ["category_id"]=>
    99.     string(1) "3"
    100.     ["parent_id"]=>
    101.     string(1) "0"
    102.     ["category_name"]=>
    103.     string(14) "ИГРЫ STEAM"
    104.     ["category_status"]=>
    105.     string(1) "1"
    106.   }
    107.   [4]=>
    108.   array(5) {
    109.     ["category_id"]=>
    110.     string(1) "4"
    111.     ["parent_id"]=>
    112.     string(1) "0"
    113.     ["category_name"]=>
    114.     string(6) "DOTA 2"
    115.     ["category_status"]=>
    116.     string(1) "1"
    117.     ["children"]=>
    118.     array(3) {
    119.       [12]=>
    120.       array(4) {
    121.         ["category_id"]=>
    122.         string(2) "12"
    123.         ["parent_id"]=>
    124.         string(1) "4"
    125.         ["category_name"]=>
    126.         string(6) "dota-1"
    127.         ["category_status"]=>
    128.         string(1) "1"
    129.       }
    130.       [13]=>
    131.       array(4) {
    132.         ["category_id"]=>
    133.         string(2) "13"
    134.         ["parent_id"]=>
    135.         string(1) "4"
    136.         ["category_name"]=>
    137.         string(6) "dota-2"
    138.         ["category_status"]=>
    139.         string(1) "1"
    140.       }
    141.       [14]=>
    142.       array(4) {
    143.         ["category_id"]=>
    144.         string(2) "14"
    145.         ["parent_id"]=>
    146.         string(1) "4"
    147.         ["category_name"]=>
    148.         string(6) "dota-3"
    149.         ["category_status"]=>
    150.         string(1) "1"
    151.       }
    152.     }
    153.   }
    154.   [5]=>
    155.   array(4) {
    156.     ["category_id"]=>
    157.     string(1) "5"
    158.     ["parent_id"]=>
    159.     string(1) "0"
    160.     ["category_name"]=>
    161.     string(11) "ROYAL QUEST"
    162.     ["category_status"]=>
    163.     string(1) "1"
    164.   }
    165.   [6]=>
    166.   array(5) {
    167.     ["category_id"]=>
    168.     string(1) "6"
    169.     ["parent_id"]=>
    170.     string(1) "0"
    171.     ["category_name"]=>
    172.     string(4) "CSGO"
    173.     ["category_status"]=>
    174.     string(1) "1"
    175.     ["children"]=>
    176.     array(3) {
    177.       [15]=>
    178.       array(4) {
    179.         ["category_id"]=>
    180.         string(2) "15"
    181.         ["parent_id"]=>
    182.         string(1) "6"
    183.         ["category_name"]=>
    184.         string(4) "CS-1"
    185.         ["category_status"]=>
    186.         string(1) "1"
    187.       }
    188.       [16]=>
    189.       array(4) {
    190.         ["category_id"]=>
    191.         string(2) "16"
    192.         ["parent_id"]=>
    193.         string(1) "6"
    194.         ["category_name"]=>
    195.         string(4) "CS-2"
    196.         ["category_status"]=>
    197.         string(1) "1"
    198.       }
    199.       [17]=>
    200.       array(4) {
    201.         ["category_id"]=>
    202.         string(2) "17"
    203.         ["parent_id"]=>
    204.         string(1) "6"
    205.         ["category_name"]=>
    206.         string(4) "CS-3"
    207.         ["category_status"]=>
    208.         string(1) "1"
    209.       }
    210.     }
    211.   }
    212.   [7]=>
    213.   array(5) {
    214.     ["category_id"]=>
    215.     string(1) "7"
    216.     ["parent_id"]=>
    217.     string(1) "0"
    218.     ["category_name"]=>
    219.     string(12) "ДРУГИЕ"
    220.     ["category_status"]=>
    221.     string(1) "1"
    222.     ["children"]=>
    223.     array(3) {
    224.       [20]=>
    225.       array(4) {
    226.         ["category_id"]=>
    227.         string(2) "20"
    228.         ["parent_id"]=>
    229.         string(1) "7"
    230.         ["category_name"]=>
    231.         string(4) "dr-1"
    232.         ["category_status"]=>
    233.         string(1) "1"
    234.       }
    235.       [21]=>
    236.       array(4) {
    237.         ["category_id"]=>
    238.         string(2) "21"
    239.         ["parent_id"]=>
    240.         string(1) "7"
    241.         ["category_name"]=>
    242.         string(4) "dr-2"
    243.         ["category_status"]=>
    244.         string(1) "1"
    245.       }
    246.       [22]=>
    247.       array(4) {
    248.         ["category_id"]=>
    249.         string(2) "22"
    250.         ["parent_id"]=>
    251.         string(1) "7"
    252.         ["category_name"]=>
    253.         string(4) "dr-3"
    254.         ["category_status"]=>
    255.         string(1) "1"
    256.       }
    257.     }
    258.   }
    259. }
    этот список я пытался вывести в шаблоне чтобы он так же в виде дерева был, в данном случае у меня выводится всего лишь категории, при клике на категорию должен разворачиваются список подкатегорий а у меня дублируется категория вместо вывода подкатегории.
    Мои догадки, создать цикл опять же в цикле для вывода подкатегорий, или же правильно подставить из существующего дерева подкатегории, только как я уже не соображу, у меня проблемы с логикой. Кто поможет мне? спасибо.
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ах да уже как несколько дней назад понял как из конструкт вытащить переменную в которой хранятся данные.
    например:
    PHP:
    1. class Test
    2. {
    3.     public = $categories = [];
    4.     public function __construct()
    5.     {
    6.         $this -> categories = $this -> getCategories();
    7.     }
    8.     public function getCategories()
    9.     {
    10.         return $arr = [1,2,3];
    11.     }
    12. }
    чтобы получить нам в другом классе переменную $categories нам нужно создать экземпляр класса и потом вызвать переменную через специальный символ.
    PHP:
    1. class Testing
    2. {
    3.     public ActionIndex()
    4.     {
    5.         $c = new Test();
    6.         $b = $c -> categories;
    7.         var_dump( $b );
    8.     }
    9. }
    таким образом мы вытащили переменную и ее данные. :)
     
    #30 _ne_scaju_, 26 апр 2019
    Последнее редактирование: 26 апр 2019