1

所以我有一个与分数相关的 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 以及如何访问对象。

先感谢您。

4

3 回答 3

1

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

$fraction->getNumerator();
$fraction->getDenominator();
于 2013-05-07T16:56:05.737 回答
1

您只能从类中访问类的私有元素:http: //php.net/manual/en/language.oop5.visibility.php

您可以为每个属性声明numeratordenominator属性 public 或在类中编写 publicgetset方法(当然,如果它们尚未实现)。除其他原因外,您可能希望使用此访问器方法来检查是否为属性分配了有效值,如果没有则抛出异常(您可以阅读本文以获取更多信息:为什么使用 getter 和 setter?)。

从 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

于 2013-05-07T16:39:38.270 回答
0

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

于 2013-05-07T16:39:28.650 回答