У меня есть класс, который называется connection.php, который имеет все вещи, связанные с подключением к моей базе данных, он также имеет следующую функцию:
function connect() {
$pdo = new PDO('mysql:host='.$host.';dbname='.$db.'', $user, $pw);
}
Когда я пытаюсь вызвать эту функцию в другом классе в следующем примере:
require('connection.php');
try {
$connect();
} catch (PDOException $e) {
die("Error, could not connect.");
}
Это дает мне следующую ошибку:
Неустранимая ошибка: имя функции должно быть строкой в /home/[redacted]/public_html/[redacted]/authenticate.php в строке 4
Что я делаю неправильно?
Просто чтобы дополнить то, что Аман сказал здесь … Вы сказали, что у вас есть class
которая содержит функцию connect()
но я не вижу ни определения класса, ни каких-либо указаний на то, что вы создаете экземпляр нового класса.
Так скажем, это действительно в классе
class database {
function connect() {
$pdo = new PDO('mysql:host='.$host.';dbname='.$db.'', $user, $pw);
}
}
Вам нужно создать экземпляр этого класса сейчас, чтобы использовать его. Итак, мы делаем следующее
$db = new database();
try {
$db->connect();
} catch (PDOException $e) {
die("Error, could not connect.");
}
пытаться
require('connection.php');
try {
connect();
} catch (PDOException $e) {
die("Error, could not connect.");
}
если вы напишите $ connect (); он проверит переменную $ connect, которая не инициализируется, поэтому вы получаете сообщение об ошибке
если тебе так нравится
require('connection.php');
$a = 'connect';
try {
$a();
} catch (PDOException $e) {
die("Error, could not connect.");
}
это будет работать
Потому что вместо переменной $ будет помещено соединение, а затем оно будет искать функцию connect ();
Я надеюсь, что это поможет вам лучше понять