无法从Fraction类访问属性

时间:2013-05-07 16:35:24

标签: php oop object

所以我有一个与分数相关的php类,我做了一些计算,当它到来时 访问价值我 var_dump输出得到这个:

  object(Fraction)#1 (2) {
  ["numerator":"Fraction":private]=>
  int(1)
  ["denominator":"Fraction":private]=>
  int(4)
}

和print_r得到这个:

  Fraction Object(
    [numerator:Fraction:private] => 1
    [denominator:Fraction:private] => 4
)

我似乎无法访问任何对象分子,分母...... 任何访问它们的建议,我不熟悉OOP以及如何 访问对象。

提前谢谢。

3 个答案:

答案 0 :(得分:1)

您只能在班级中访问班级的私人元素:http://php.net/manual/en/language.oop5.visibility.php

您可以公开numeratordenominator属性,也可以在类中为每个属性编写公共getset方法(如果尚未实现,则为课程)。您可能希望使用此访问器方法的其他原因是为了检查是否为该属性分配了有效值,如果没有则抛出异常(您可以阅读以获取更多信息:Why use getters and setters?)。

从PHP 5.3开始(我相信)还有魔法__get__set方法(比如python):

http://www.php.net/manual/en/language.oop5.overloading.php#object.get http://www.php.net/manual/en/language.oop5.overloading.php#object.set

答案 1 :(得分:1)

这不是stdClass,而是Fraction类;你得到这样的价值:

$fraction->getNumerator();
$fraction->getDenominator();

答案 2 :(得分:0)

您已将这些属性设为私有,因此它们仅对对象本身可见。如果您想直接访问它们,您需要将它们公开。