【问题标题】:Assign a public static function's return value to a private variable将公共静态函数的返回值分配给私有变量
【发布时间】:2016-11-14 11:06:16
【问题描述】:

有两个类:

class Db {
    public static function getConnection () {
        /*Initialize parameters*/
        $db = new PDO (...);
        return $db;
    }
}

Class Db 初始化并返回一个 PDO 对象。

然后我想在另一个班级做以下事情:

class User {
    private $db = Db::getConnection();
    ....
}

为什么我在这里收到错误:

private $db = Db::getConnection();

【问题讨论】:

标签: php methods static private assign


【解决方案1】:

在不知道错误的情况下,很难说,但我猜是因为在那里你不能这样做,试试这个。

class User {
    private $db = null;

    function __construct(){
        $this->db = Db::getConnection();
    }

    public function getFriends(){
        return $this->db->query('SELECT * FROM friends');
    }
}

【讨论】:

  • 为什么不只是private $db;
  • 我猜个人喜好,如果可以的话,我总是给出一个值,虽然它不是必需的。
  • @TomHart 如果我使用这个选项,$db 只有在我使用 new 运算符创建对象时才会被初始化。但我想在 User 类的方法中使用这个 $db 变量。
  • User 只是静态方法吗?否则无论如何你都必须实例化对象
  • @TomHart 没有。User 类将具有 login()getFriends 等方法。这些方法中的每一个都对数据库进行 SQL 查询,所以我必须有 @987654327 @ 在每个方法中。所以我想要一个可以从每个方法访问的 $db 属性。
猜你喜欢
  • 2012-10-18
  • 2017-06-30
  • 2018-01-24
  • 2012-05-14
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多