global пора выпороть из php и не жить старьем. Движок вангую из версий 4 - 5 пхп без ООП и такое относится к говнокоду от попова http://imgur.com/7zeYWRe
вот тут https://download.simplemachines.org/ скачайте Download SMF 2.0.14 - Full install там весь код движка есть)) я не разработчик движка)) просто у меня на нем есть пару проектов) а так навскидку вот так это выглядит к примеру)) PHP: // Load this user's permissions. function loadPermissions() { global $user_info, $board, $board_info, $modSettings, $smcFunc, $sourcedir; if ($user_info['is_admin']) { banPermissions(); return; } if (!empty($modSettings['cache_enable'])) { $cache_groups = $user_info['groups']; asort($cache_groups); $cache_groups = implode(',', $cache_groups); // If it's a spider then cache it different. if ($user_info['possibly_robot']) $cache_groups .= '-spider'; if ($modSettings['cache_enable'] >= 2 && !empty($board) && ($temp = cache_get_data('permissions:' . $cache_groups . ':' . $board, 240)) != null && time() - 240 > $modSettings['settings_updated']) { list ($user_info['permissions']) = $temp; banPermissions(); return; } elseif (($temp = cache_get_data('permissions:' . $cache_groups, 240)) != null && time() - 240 > $modSettings['settings_updated']) list ($user_info['permissions'], $removals) = $temp; } // If it is detected as a robot, and we are restricting permissions as a special group - then implement this. $spider_restrict = $user_info['possibly_robot'] && !empty($modSettings['spider_group']) ? ' OR (id_group = {int:spider_group} AND add_deny = 0)' : ''; if (empty($user_info['permissions'])) { // Get the general permissions. $request = $smcFunc['db_query']('', ' SELECT permission, add_deny FROM {db_prefix}permissions WHERE id_group IN ({array_int:member_groups}) ' . $spider_restrict, array( 'member_groups' => $user_info['groups'], 'spider_group' => !empty($modSettings['spider_group']) ? $modSettings['spider_group'] : 0, ) ); $removals = array(); while ($row = $smcFunc['db_fetch_assoc']($request)) { if (empty($row['add_deny'])) $removals[] = $row['permission']; else $user_info['permissions'][] = $row['permission']; } $smcFunc['db_free_result']($request); if (isset($cache_groups)) cache_put_data('permissions:' . $cache_groups, array($user_info['permissions'], $removals), 240); } // Get the board permissions. if (!empty($board)) { // Make sure the board (if any) has been loaded by loadBoard(). if (!isset($board_info['profile'])) fatal_lang_error('no_board'); $request = $smcFunc['db_query']('', ' SELECT permission, add_deny FROM {db_prefix}board_permissions WHERE (id_group IN ({array_int:member_groups}) ' . $spider_restrict . ') AND id_profile = {int:id_profile}', array( 'member_groups' => $user_info['groups'], 'id_profile' => $board_info['profile'], 'spider_group' => !empty($modSettings['spider_group']) ? $modSettings['spider_group'] : 0, ) ); while ($row = $smcFunc['db_fetch_assoc']($request)) { if (empty($row['add_deny'])) $removals[] = $row['permission']; else $user_info['permissions'][] = $row['permission']; } $smcFunc['db_free_result']($request); } // Remove all the permissions they shouldn't have ;). if (!empty($modSettings['permission_enable_deny'])) $user_info['permissions'] = array_diff($user_info['permissions'], $removals); if (isset($cache_groups) && !empty($board) && $modSettings['cache_enable'] >= 2) cache_put_data('permissions:' . $cache_groups . ':' . $board, array($user_info['permissions'], null), 240); // Banned? Watch, don't touch.. banPermissions(); // Load the mod cache so we can know what additional boards they should see, but no sense in doing it for guests if (!$user_info['is_guest']) { if (!isset($_SESSION['mc']) || $_SESSION['mc']['time'] <= $modSettings['settings_updated']) { require_once($sourcedir . '/Subs-Auth.php'); rebuildModCache(); } else $user_info['mod_cache'] = $_SESSION['mc']; } }
ну как бы в структуре)) я написал "вроде ООП"))) папка /Source хранит файлы которые очень похожи на названия классов) вроде как контроллеры)) в папке /Themes Лежат темы - вроде как представление))) я к тому что вроде уже не процедурный)) но еще и не ООП)
общее представление имею)) читал)) курсы на ютубе смотрел, но видео курсы что то мне не очень нравятся) больше читать нравится)) просто не было задач где бы плотно столкнулся с проектом построенным на основе принципов ООП... YII2 ковырял ради интереса) osCart клиенту ставил.. вот и все мое знакомство с ООП приложениями)
Ну кстати, ООП без классов возможен. Имитируя классы другими возможностями языка. Первые компиляторы с C++ переводили код C++ на C, а не в машинный код. Только зачем так программировать на php - не понятно.
В том то и дело. Без понимания что такое классы и экземпляры класса не получится понять что есть такое ООП.
Взаимоисключающие тезисы, если честно.. Для передачи данных в функциях есть параметры. Точка. --- Добавлено --- Си - это отдельный феншуй. Там есть такое понятие как "структура". Это, само по себе, прародитель "класса". В пыхе можно разве что пилить массив, содержащий анонимные функции, и генерить этот массив в некоей процедурной фабрике. Но зачем?
Не очень понял, что делает и что должен делать ваш код, но вы в курсе, что переменная в функции, даже если она имеет тоже имя - это уже другая переменная? Которая создается на время выполнения функции, а затем удаляется. Когда с этим разбирался, сделал для себя такой наглядный пример: PHP: // Пример работы ссылок на переменные // Пример №1: Не смотря на то, что переменная $b существует как внутри функции, // так и во вне, это разные переменные и они имеют разные значения, что хорошо // видно на этом примере: результат вывода будет "5 10" $a = 5; $b = 10; function go($a, $b) { $b = $a; echo $b.'<br>'; // выводит 5 } go($a, $b); echo $b.'<br>'; // выводит 10 echo "<br><br><br><br>"; // Пример №2: Здесь мы внутри функции делаем ссылку на внешнюю переменную // $b, которая приравнивается к переменной $a, результат будет "5 5" $a = 5; $b = 10; function go2($a, &$b) { $b = $a; echo $b.'<br>'; // выводит 5 } go2($a, $b); echo $b.'<br>'; // выводит 5