Есть код:
$options = array(
'user' => 'test',
'pass' => '',
'db' => 'test'
);
function generate_link($file, $ip,$opts = $options) {
$phrase = getRandomWord();
$sql = "INSERT INTO files SET ip=?s,file=?s,md5=?s";
$db = new SafeMySQL($opts);
$db->query($sql,$ip,$file,$phrase);
return $phrase;
}
так вот переменная $options пишет unexpected..Как ее передать туда чтобы все работало?( это нужно для работы с объектом $db и подключения options из внешнего файла.. пробовал по разному и передавать сам объект и создавать его в другом файле.. не хочет он работать, только если создаю внутри функции работает
Внимание, правильный ответ.
Соединение с БД в скрипте всегда должно быть только одно, делаться один раз, а не при каждом вызове функции заново. Поэтому
function generate_link($db, $file, $ip) {
$phrase = getRandomWord();
$sql = "INSERT INTO files SET ip=?s,file=?s,md5=?s";
$db->query($sql,$ip,$file,$phrase);
return $phrase;
}
а в скрипте пишем так
$options = [
'user' => 'test',
'pass' => '',
'db' => 'test'
];
$db = new SafeMySQL($options);
// в идеале все что выше, должно быть в отдельном файле
// и подключаться через include
$file = 'что-то';
$ip = 'что-то';
echo generate_link($db, $file, $ip);
Передавайте массив третьим параметром:
<?php
$file = 'что-то';
$ip = 'что-то';
$options = [
'user' => 'test',
'pass' => '',
'db' => 'test'
];
echo generate_link($file, $ip, $options);
function generate_link($file, $ip, $options) {
$phrase = getRandomWord();
$sql = "INSERT INTO files SET ip=?s,file=?s,md5=?s";
$db = new SafeMySQL($options);
$db->query($sql, $ip, $file, $phrase);
return $phrase;
}
Если нужен вариант типа "если нет кастомных опций, тогда используем опции по умолчанию", то я бы сделал так:
function generate_link($file, $ip,$opts = Null) {
if(empty($opts)) {
//устанавливаем настройки по умолчанию. Можно взять с какой-то переменной или установить так:
$opts = [
'user' => 'test',
'pass' => '',
'db' => 'test'
];
}
// тело функции
}
Варианты использования:
//с настройками по умолчанию:
echo generate_link($file, $ip);
// с кастомными настройками:
$options = [
'user' => 'test2',
'pass' => '',
'db' => 'test'
];
echo generate_link($file, $ip, $options);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Что нужно дописать что бы выражение пропускало только a-z в нижнем регистре
Имеется файл, который подключается через include к главной странице (так он работает)Так-же этот файл взываю аяксом и тут, через if определяю если...