require_once和对象的范围

时间:2015-08-12 17:01:47

标签: php session scope

非常新的PHP,并且仍然试图围绕正在出现的范围问题。

一些suedo代码:

此文件包含在root用户的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-&gt; authenticate中定义,但如果我在class.pp的顶部执行var_dump,则表明它已定义。

这还够继续吗?为什么$ session没有明确定义。

这是我得到的错误  注意:未定义的变量:第55行的D:\ Program Files \ wamp \ www \ site \ application \ controllers \ user.php中的会话

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您正在尝试在类方法中使用$ session,该方法只有该方法的局部范围。

php手册涵盖了这一点:http://php.net/manual/en/language.variables.scope.php

您可以做的是将$ session初始化为全局变量,然后您可以在authenticate方法中访问它。

或者,您可以将$ session作为参数传递给authenticate方法。

例如:

->authenticate($email,$password,$session);