У меня есть код ниже, который не будет запущен из-за того, что я не смог узнать, как вызвать функцию, находящуюся в том же классе, что и другая функция. Я уже пробовал использовать $this
, но он дает мне ошибку PHP Using $this when not in object context...Line 25
. Я понятия не имею, как это исправить, и я надеюсь, что кто-то еще может дать мне несколько советов о том, что делать. Мой код ниже, спасибо :)Вызов функции внутри класса PHP из функции внутри одного класса
class SESSION {
function start() {
session_start();
}
function check() {
if ($_SESSION["username"]) {
return $_SESSION["username"];
} else {
return "nli"; //Not logged in :(
}
}
function set_session($username) {
$_SESSION["username"] = $username;
}
function login($username, $password) {
$database = DB::connect();
$passwordsha = sha1($password);
$query = "";
$res = $database->query($query);
$num = $res->num_rows;
if ($num == 0) {
header("Location: login.php?e=1");
} elseif ($num == 1) {
$this->set_session($username);
header("Location: admin.php");
} else {
header("Location: login.php?e=2");
}
}
}
Вы пытаетесь запустить это статически? Или вы на самом деле создаете объект и манипулируете им? Session :: login ($ a, $ b) vs. $ pSession = new Session(); $ pSession-> login ($ a, $ b); –
Через другие файлы я использовал require() в этом файле для 'Session :: login()', но в этом случае мне нужно вызвать 'set_session()' из 'login()'. И нет, я не создаю объект. –
Какую версию PHP вы используете? Несмотря на отсутствие разрешения области (по умолчанию для общественности), когда вы создаете функцию внутри конструкции класса, она становится методом (по-прежнему использует ключевое слово функции tho). Вызов '$ this-> set_session' выглядит так, как будто он должен работать. Как выглядит код вызова? –