如何访问私有财产/方法?

时间:2013-12-06 19:48:59

标签: php class oop methods private

我是OOP编程的新手,我正在尝试建立一个私有类db,用于数据库连接:

我的课程:

class db
{
private $_db;

private function db()   
{
$this->db = new mysqli('localhost','x','x','x');
$this->db->set_charset('utf');
}
}

在另一个文件中,我有以下代码:

$db = new db();
                $sql = "SELECT news, DATE_FORMAT(date, '%D %b') AS date FROM news ORDER       
BY DATE_FORMAT(date, '%Y, %m, %d') DESC LIMIT 3";
                $r = $db->db->query($sql);
                while($row=$r->fetch_assoc())
                {
                    echo '<b>'. $row['date'] . '</b></br> ' . $row['news'] .'</br>   
</br>';
                }

它适用于公众,但不适用于私人。

我读到私有方法只能在类中访问,但却无法真正理解如何操作。有人可以给我一个提示吗?

此致 千斤顶

3 个答案:

答案 0 :(得分:1)

我不确定为什么你的方法是私有的。从本质上讲,您希望在类外部使用的任何方法都应该是公共的。这导致了getter和setter的创建。

Getters返回私有变量字段,setter将这些字段设置为新值。这只是一种强制类型并干净地接受类修改的安全方法。

答案 1 :(得分:0)

OOP的一个关键原则是将接口与实现分离。类可以表示为黑盒子,外部世界使用公共方法和属性与您的盒子进行交互。

虽然私有方法和属性是内部的,但用于实现功能。

没有必要将function db()设为私有,因为您的班级必须将与数据库的连接作为外部世界的函数提供。

答案 2 :(得分:0)

私有方法和私有属性只能在同一个类(范围)内访问。应充分考虑私有属性和方法的使用,私有方法或私有属性避免了定义类的继承者的任何可达性或可继承性。

受保护的方法和私有属性只能在同一个类中找到并且它是继承者。对于类内部逻辑及其属性,建议使用受保护的方法和私有方法。