访问在构造函数中声明的变量

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
}

因为你的Usersclass定义了一个新的构造函数,你需要调用父构造函数将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;
    }
}
?>