В настоящее время я пытаюсь убрать как можно больше кода с веб-сайта компании, в которой я работаю, без необходимости полностью переписывать (например, удаление глупых комментариев: // 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 разных имени переменной или движущийся код?
Как говорит Дечезе: нет на самом деле … но вы могли бы сделать это:
Оставьте файл как есть.
Измените файл 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;
В этом случае: нет необходимости изменять файл с
Других решений пока нет …