За последние 24 часа нас посетили 17566 программистов и 1649 роботов. Сейчас ищут 852 программиста ...

Передача переменной

Тема в разделе "PHP для новичков", создана пользователем Yankovitz, 16 май 2017.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
  2. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    спасибо большое)) знаю такое)) правда сам на практике никогда не использовал))
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    global пора выпороть из php и не жить старьем. Движок вангую из версий 4 - 5 пхп без ООП

    и такое относится к говнокоду от попова http://imgur.com/7zeYWRe
     
  4. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    движок 5.ХХ))
    там вроде ООП есть)) но без классов))
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    есть часть кода ? для любопытства
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет, не имеет.
     
    Алекс8 нравится это.
  7. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    вот тут https://download.simplemachines.org/ скачайте Download SMF 2.0.14 - Full install
    там весь код движка есть)) я не разработчик движка)) просто у меня на нем есть пару проектов)

    а так навскидку вот так это выглядит к примеру))
    PHP:
    1. // Load this user's permissions.
    2. function loadPermissions()
    3. {
    4.     global $user_info, $board, $board_info, $modSettings, $smcFunc, $sourcedir;
    5.  
    6.     if ($user_info['is_admin'])
    7.     {
    8.         banPermissions();
    9.         return;
    10.     }
    11.  
    12.     if (!empty($modSettings['cache_enable']))
    13.     {
    14.         $cache_groups = $user_info['groups'];
    15.         asort($cache_groups);
    16.         $cache_groups = implode(',', $cache_groups);
    17.         // If it's a spider then cache it different.
    18.         if ($user_info['possibly_robot'])
    19.             $cache_groups .= '-spider';
    20.  
    21.         if ($modSettings['cache_enable'] >= 2 && !empty($board) && ($temp = cache_get_data('permissions:' . $cache_groups . ':' . $board, 240)) != null && time() - 240 > $modSettings['settings_updated'])
    22.         {
    23.             list ($user_info['permissions']) = $temp;
    24.             banPermissions();
    25.  
    26.             return;
    27.         }
    28.         elseif (($temp = cache_get_data('permissions:' . $cache_groups, 240)) != null && time() - 240 > $modSettings['settings_updated'])
    29.             list ($user_info['permissions'], $removals) = $temp;
    30.     }
    31.  
    32.     // If it is detected as a robot, and we are restricting permissions as a special group - then implement this.
    33.     $spider_restrict = $user_info['possibly_robot'] && !empty($modSettings['spider_group']) ? ' OR (id_group = {int:spider_group} AND add_deny = 0)' : '';
    34.  
    35.     if (empty($user_info['permissions']))
    36.     {
    37.         // Get the general permissions.
    38.         $request = $smcFunc['db_query']('', '
    39.            SELECT permission, add_deny
    40.            FROM {db_prefix}permissions
    41.            WHERE id_group IN ({array_int:member_groups})
    42.                ' . $spider_restrict,
    43.             array(
    44.                 'member_groups' => $user_info['groups'],
    45.                 'spider_group' => !empty($modSettings['spider_group']) ? $modSettings['spider_group'] : 0,
    46.             )
    47.         );
    48.         $removals = array();
    49.         while ($row = $smcFunc['db_fetch_assoc']($request))
    50.         {
    51.             if (empty($row['add_deny']))
    52.                 $removals[] = $row['permission'];
    53.             else
    54.                 $user_info['permissions'][] = $row['permission'];
    55.         }
    56.         $smcFunc['db_free_result']($request);
    57.  
    58.         if (isset($cache_groups))
    59.             cache_put_data('permissions:' . $cache_groups, array($user_info['permissions'], $removals), 240);
    60.     }
    61.  
    62.     // Get the board permissions.
    63.     if (!empty($board))
    64.     {
    65.         // Make sure the board (if any) has been loaded by loadBoard().
    66.         if (!isset($board_info['profile']))
    67.             fatal_lang_error('no_board');
    68.  
    69.         $request = $smcFunc['db_query']('', '
    70.            SELECT permission, add_deny
    71.            FROM {db_prefix}board_permissions
    72.            WHERE (id_group IN ({array_int:member_groups})
    73.                ' . $spider_restrict . ')
    74.                AND id_profile = {int:id_profile}',
    75.             array(
    76.                 'member_groups' => $user_info['groups'],
    77.                 'id_profile' => $board_info['profile'],
    78.                 'spider_group' => !empty($modSettings['spider_group']) ? $modSettings['spider_group'] : 0,
    79.             )
    80.         );
    81.         while ($row = $smcFunc['db_fetch_assoc']($request))
    82.         {
    83.             if (empty($row['add_deny']))
    84.                 $removals[] = $row['permission'];
    85.             else
    86.                 $user_info['permissions'][] = $row['permission'];
    87.         }
    88.         $smcFunc['db_free_result']($request);
    89.     }
    90.  
    91.     // Remove all the permissions they shouldn't have ;).
    92.     if (!empty($modSettings['permission_enable_deny']))
    93.         $user_info['permissions'] = array_diff($user_info['permissions'], $removals);
    94.  
    95.     if (isset($cache_groups) && !empty($board) && $modSettings['cache_enable'] >= 2)
    96.         cache_put_data('permissions:' . $cache_groups . ':' . $board, array($user_info['permissions'], null), 240);
    97.  
    98.     // Banned?  Watch, don't touch..
    99.     banPermissions();
    100.  
    101.     // Load the mod cache so we can know what additional boards they should see, but no sense in doing it for guests
    102.     if (!$user_info['is_guest'])
    103.     {
    104.         if (!isset($_SESSION['mc']) || $_SESSION['mc']['time'] <= $modSettings['settings_updated'])
    105.         {
    106.             require_once($sourcedir . '/Subs-Auth.php');
    107.             rebuildModCache();
    108.         }
    109.         else
    110.             $user_info['mod_cache'] = $_SESSION['mc'];
    111.     }
    112. }
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ООП-то где?
     
  9. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    ну как бы в структуре)) я написал "вроде ООП"))) папка /Source хранит файлы которые очень похожи на названия классов) вроде как контроллеры)) в папке /Themes Лежат темы - вроде как представление)))
    я к тому что вроде уже не процедурный)) но еще и не ООП)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тебе надо почитать что такое ооп
     
    Алекс8 нравится это.
  11. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    общее представление имею)) читал)) курсы на ютубе смотрел, но видео курсы что то мне не очень нравятся) больше читать нравится))
    просто не было задач где бы плотно столкнулся с проектом построенным на основе принципов ООП...
    YII2 ковырял ради интереса) osCart клиенту ставил.. вот и все мое знакомство с ООП приложениями)
     
    Fell-x27 нравится это.
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну типа если ты по файлам что-то раскладываешь, то это не ооп
     
    Алекс8 нравится это.
  13. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Знаешь как это звучит для тех кто знает:
    "Там вроде хлеб с маслом, но без масла"
     
  14. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    ну как то так)) :p
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    а чё ты мне язык показываешь. Стыдно должно быть, говорить такой бред.
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну кстати, ООП без классов возможен. Имитируя классы другими возможностями языка. Первые компиляторы с C++ переводили код C++ на C, а не в машинный код. Только зачем так программировать на php - не понятно.
     
  17. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    В том то и дело. Без понимания что такое классы и экземпляры класса не получится понять что есть такое ООП.
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Взаимоисключающие тезисы, если честно.. Для передачи данных в функциях есть параметры. Точка.
    --- Добавлено ---
    Си - это отдельный феншуй. Там есть такое понятие как "структура". Это, само по себе, прародитель "класса". В пыхе можно разве что пилить массив, содержащий анонимные функции, и генерить этот массив в некоей процедурной фабрике. Но зачем?
     
  19. Walk

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

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Не очень понял, что делает и что должен делать ваш код, но вы в курсе, что переменная в функции, даже если она имеет тоже имя - это уже другая переменная? Которая создается на время выполнения функции, а затем удаляется.

    Когда с этим разбирался, сделал для себя такой наглядный пример:

    PHP:
    1. // Пример работы ссылок на переменные
    2.  
    3. // Пример №1: Не смотря на то, что переменная $b существует как внутри функции,
    4. // так и во вне, это разные переменные и они имеют разные значения, что хорошо
    5. // видно на этом примере: результат вывода будет "5 10"
    6. $a = 5;
    7. $b = 10;
    8.  
    9. function go($a, $b) {
    10.     $b = $a;
    11.     echo $b.'<br>'; // выводит 5
    12. }
    13.  
    14. go($a, $b);
    15. echo $b.'<br>'; // выводит 10
    16.  
    17. echo "<br><br><br><br>";
    18.  
    19. // Пример №2: Здесь мы внутри функции делаем ссылку на внешнюю переменную
    20. // $b, которая приравнивается к переменной $a, результат будет "5 5"
    21.  
    22. $a = 5;
    23. $b = 10;
    24.  
    25. function go2($a, &$b) {
    26.     $b = $a;
    27.     echo $b.'<br>'; // выводит 5
    28. }
    29.  
    30. go2($a, $b);
    31. echo $b.'<br>'; // выводит 5
     
    #44 Walk, 19 май 2017
    Последнее редактирование: 19 май 2017
  20. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Это называется область видимости переменных.