我已经研究并尝试了不同的方法,但是我无法将变量从主类传递给子类。进行var_dump
总是显示NULL。这是因为我要作为数组发送吗?
Userdata.class.php
<?php
/**
* Class used for getting userdata
*/
class Userdata
{
public $userdata;
function __construct()
{
}
public function getUserData($username, $password)
{
$this->userdata = array
(
'arr_username' => $username,
'arr_password' => $password
);
return $this->userdata;
}
}
Authenticate.class.php
require_once('Userdata.class.php');
/**
* This class is used for user authentication/validation/form
*/
class Authentication extends Userdata
{
var $userdata;
function logIn()
{
var_dump($this->userdata);
}
}
session_handler.php
function formSubmitUser()
{
// Class the class Authentication
$userdata = new Userdata();
$userdata->authentication = new Authentication;
//First submit the form before processing the data
if (isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$userdata->getUserData($username, $password);
$userdata->authentication->logIn();
}
}
如果我将值手动添加到主类__construct,那么一切似乎都可以正常工作。但是,如果我尝试从功能getUserData
中获取它,我将无法正常工作。
function __construct()
{
$this->userdata = "Sending data like this works";
}
我想念什么吗?
答案 0 :(得分:-1)
在类身份验证中,您没有从Userdata类中调用父变量 这就是为什么您从var_dump中获取NULL的原因。身份验证中的$ userdata没有值。 尝试var_dump(parent :: $ userdata); 这应该使您可以访问它
答案 1 :(得分:-1)
您的代码应在下一个
function formSubmitUser()
{
// Class the class Authentication
$userdata = new Authentication;
//First submit the form before processing the data
if (isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$userdata->getUserData($username, $password);
$userdata->logIn();
}
}
答案 2 :(得分:-1)
首先,将getter方法用作setter并不常见,我建议如果用户数据是数组,则应在构造函数中实例化它。
document.getElementsByClassName('K3JSBVB-C-b titleField')[0].value = 'NEW AWSOME TITLE'
答案 3 :(得分:-1)
您要在Authentication中重新声明userdata变量,该变量实质上是覆盖来自Userdata类的变量。从身份验证类中删除var $userdata
答案 4 :(得分:-1)
您应遵循继承规则。您无需创建两个类的实例。 用它代替您的session_handler.php
function formSubmitUser()
{
$authenticator = new Authentication;
//First submit the form before processing the data
if (isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$authenticator->getUserData($username, $password);
$authenticator->logIn();
}
}
如果您需要其他帮助,请告诉我