访问在构造函数中声明的变量
Accessing variables declared inside the constructor
我有一个索引文件,在点击表单提交时它调用了 class Users.php
中的方法,该方法还从用户 class SqlFunctions.php
中的方法扩展了 class SqlFunctions.php
=31=]。我正在调用 SqlFunction class 中的函数。我无法访问构造函数中定义的变量。
index.php
<?php
require_once '../includes/constants.php';
require_once DOCROOT.'classes/class.users.php';
$objUser = new Users();
if(isset($_POST) && !empty($_POST)){
$objUser->userLogin();
}
?>
Class Users.php
<?php
require_once DOCROOT.'classes/class.sqlFunctions.php';
class Users extends sqlFunctions {
function __construct() {
}
function userLogin() {
echo '<pre>'; print_r($this->find()); die;
}
}
?>
Class SqlFunction.php
<?php
require_once DOCROOT.'includes/config.php';
class sqlFunctions {
function __construct() {
$this->name = 'MYNAME';
}
function find() {
echo '<pre>'; print_r($this->name);
}
}
?>
在上面的代码中,它应该打印 MYNAME
因为我已经在构造函数中定义了它。
希望我的问题够清楚了。
您应该在 sqlFunctions 中定义 class 属性,例如
class sqlFunctions {
public $name;
// etc
}
因为你的Users
class定义了一个新的构造函数,你需要调用父构造函数将name设置为MYNAME
class Users {
function __construct() {
parent::__construct();
}
}
调用子构造函数并不会隐式调用父构造函数,您必须自己执行此操作。这就是为什么 Users class 的 $name 属性 没有被初始化为 MYNAME 的原因。
要实现你想要的,请在 Users class:
中调用父级的构造函数
<?php
require_once DOCROOT.'classes/class.sqlFunctions.php';
class Users extends sqlFunctions {
function __construct() {
parent::__construct();
}
function userLogin() {
echo '<pre>'; print_r($this->find()); die;
}
}
?>
我有一个索引文件,在点击表单提交时它调用了 class Users.php
中的方法,该方法还从用户 class SqlFunctions.php
中的方法扩展了 class SqlFunctions.php
=31=]。我正在调用 SqlFunction class 中的函数。我无法访问构造函数中定义的变量。
index.php
<?php
require_once '../includes/constants.php';
require_once DOCROOT.'classes/class.users.php';
$objUser = new Users();
if(isset($_POST) && !empty($_POST)){
$objUser->userLogin();
}
?>
Class Users.php
<?php
require_once DOCROOT.'classes/class.sqlFunctions.php';
class Users extends sqlFunctions {
function __construct() {
}
function userLogin() {
echo '<pre>'; print_r($this->find()); die;
}
}
?>
Class SqlFunction.php
<?php
require_once DOCROOT.'includes/config.php';
class sqlFunctions {
function __construct() {
$this->name = 'MYNAME';
}
function find() {
echo '<pre>'; print_r($this->name);
}
}
?>
在上面的代码中,它应该打印 MYNAME
因为我已经在构造函数中定义了它。
希望我的问题够清楚了。
您应该在 sqlFunctions 中定义 class 属性,例如
class sqlFunctions {
public $name;
// etc
}
因为你的Users
class定义了一个新的构造函数,你需要调用父构造函数将name设置为MYNAME
class Users {
function __construct() {
parent::__construct();
}
}
调用子构造函数并不会隐式调用父构造函数,您必须自己执行此操作。这就是为什么 Users class 的 $name 属性 没有被初始化为 MYNAME 的原因。 要实现你想要的,请在 Users class:
中调用父级的构造函数<?php
require_once DOCROOT.'classes/class.sqlFunctions.php';
class Users extends sqlFunctions {
function __construct() {
parent::__construct();
}
function userLogin() {
echo '<pre>'; print_r($this->find()); die;
}
}
?>