PHP Как предотвратить переопределение foreach внешних переменных

В настоящее время я пытаюсь убрать как можно больше кода с веб-сайта компании, в которой я работаю, без необходимости полностью переписывать (например, удаление глупых комментариев: // declare variables, очистка имен переменных, согласованность и т. д.). Код ужасный и ужасный, использует много файлов, которые включаются, и переменные используются между файлами, что делает его действительно раздражающим.

Проблема в том, что такая простая вещь, как переименование переменной, может сильно сломаться. В настоящее время у меня есть следующая проблема:

В файле a У меня есть запрос, который выглядит примерно так:

$getProductSql = 'QUERY';
$getProduct = $db->prepare($getProductSql);
// some bind values etc.
$getProduct->execute();
$product = $getProduct->fetch(PDO::FETCH_ASSOC);

Теперь, после того, как этот файл включен в индекс, файл b будет включен, который содержит следующее:

$getProductsSql = 'QUERY';
$getProducts = $db->prepare($getProductsSql);
// some bind values etc.
$getProducts->execute();

foreach ($getProducts->fetchAll(PDO::FETCH_ASSOC) as $product) {
// some code
}

После того, как этот файл включен, файл c будет включен, который содержит следующее:

if ($product['COLUMN'] === '1')

В файле c, $product переменная из файла a следует использовать, но из-за того, как наша структура и файл b быть включенным между, $product из файла a заменяется на последнее значение $product из цикла в файле b,

Есть ли способ решить это без используя 2 разных имени переменной или движущийся код?

0

Решение

Как говорит Дечезе: нет на самом деле … но вы могли бы сделать это:

Оставьте файл как есть.

Измените файл b следующим образом:

$getProductsSql = 'QUERY';
$getProducts = $db->prepare($getProductsSql);
// some bind values etc.
$getProducts->execute();

$p[] = $product;

foreach ($getProducts->fetchAll(PDO::FETCH_ASSOC) as $product) {
// some code
$p[] = $product
}
$product = $p;

И файл c, как это:

if ($product[0]['COLUMN'] === '1')

Это немного сбивает с толку и не очень приятно. И да, именно поэтому вы должны использовать функцию …

Альтернативно: если вам больше не нужен массив product из файла b в файле c, вы также можете просто сделать это:

файл б:

$getProductsSql = 'QUERY';
$getProducts = $db->prepare($getProductsSql);
// some bind values etc.
$getProducts->execute();

$p = $product;

foreach ($getProducts->fetchAll(PDO::FETCH_ASSOC) as $product) {
// some code
}
$product = $p;

В этом случае: нет необходимости изменять файл с

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector