Довольно новый для PHP и по-прежнему пытается обернуть мою голову проблемами области, которые возникают.Сфера применения require_once и объектов
Некоторые suedo код:
Этот файл включен из index.php в корне.
login.php:
require_once("initialize.php");
//Get the $_POST data from the form submission.
//Call on the user object
User::createNewUser($firstName,$lastName,$email1,$password1);
//HTML
<form>signin stuff</form>
initialize.php:
//Define some path defaults for the site.
//Load up some scripts.
require_once("session.php");
require_once("user.php");
//and several others
session.php:
class Session...
public $user;
public function login...
$session=new Session()
user.php:
class User...
public static function authenticate($email,$password){...
$session->login($user); //Here is the problem, $session is not defined.
По какой-то причине $ session еще не определен в User-> authenticate, но если я делаю var_dump в верхней части user.php перед классом, он утверждает, что он определен.
Достаточно ли этого? Почему $ session не определяется, когда это ясно.
Это ошибка, я получаю Примечание: Undefined переменной: сессия в D: \ Program Files \ WAMP \ WWW \ сайт \ приложения \ Контроллеры \ User.php на линии 55
Спасибо за любую помощь, которая вы можете предоставить.
Это утверждение внутри метода, поэтому '$ session' относится к локальной переменной, если не сказать иначе. Вы можете сказать иначе: либо ссылаясь на переменную в глобальной области действия (очень уродливую и небезопасную), либо передавая эту переменную, либо самому методу, либо объекту, который вы создаете из класса, чтобы использовать этот метод. Очень элегантный был бы singleton-классом для сеанса со статическим getter, чтобы вы могли ссылаться на объект сеанса из любого места, где бы вы ни захотели, не помещая его в глобальную область. – arkascha
Не уверен, что вы получаете, поэтому я ищу некоторые из того, что вы только что сказали. Благодарю. –
Почему это «очень уродливое и небезопасное», чтобы иметь его в глобальном масштабе? А что такое «одноэлементный класс»? –