Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法从分数类访问属性_Php_Oop_Object - Fatal编程技术网

Php 无法从分数类访问属性

Php 无法从分数类访问属性,php,oop,object,Php,Oop,Object,所以我有一个与分数相关的php类,我做一些计算,当它出现时 要访问值,请执行以下操作: var_转储输出以获取以下内容: object(Fraction)#1 (2) { ["numerator":"Fraction":private]=> int(1) ["denominator":"Fraction":private]=> int(4) } Fraction Object( [numerator:Fraction:private] => 1

所以我有一个与分数相关的php类,我做一些计算,当它出现时 要访问值,请执行以下操作: var_转储输出以获取以下内容:

  object(Fraction)#1 (2) {
  ["numerator":"Fraction":private]=>
  int(1)
  ["denominator":"Fraction":private]=>
  int(4)
}
  Fraction Object(
    [numerator:Fraction:private] => 1
    [denominator:Fraction:private] => 4
)
并打印以获取以下信息:

  object(Fraction)#1 (2) {
  ["numerator":"Fraction":private]=>
  int(1)
  ["denominator":"Fraction":private]=>
  int(4)
}
  Fraction Object(
    [numerator:Fraction:private] => 1
    [denominator:Fraction:private] => 4
)
我似乎无法访问任何对象分子,分母。。。 任何访问它们的建议,我都不熟悉OOP以及如何访问它们 访问对象


提前谢谢。

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

只能从类内访问类的私有元素:

您可以将
分子
分母
属性声明为公共属性,也可以在类内为每个属性编写公共的
get
set
方法(当然,如果尚未实现)。除其他原因外,您可能希望使用此访问器方法来检查是否为属性分配了有效值,如果没有,则引发异常(有关详细信息,请阅读此内容:)

从PHP5.3开始(我相信),还有神奇的
\uuuuu get
\uuuu set
方法(如python中的方法):


这不是一个
stdClass
,而是一个类;您可以得到如下值:

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

它们是私有的,这意味着您不能从对象的“外部”访问它们。只有对象中的方法才能访问。好的,谢谢,但是如果我公开了它们,以后如何访问它们?如果你公开了它们,只需像访问任何其他对象公共属性一样,以$myfraction->分子和$myfraction->分母的形式访问它们。这个类不是由OP创建的,相反,它来自并且已经有了正确的访问器方法。好的,谢谢,但是如果我公开了它们,以后如何访问它们?@bornie我相信语法是
$classname->propertyname
分别用类的名称替换classname和用属性的名称替换propertyname。对于函数,它将是
$classname->functionname()。同样,用适当的值替换相应的名称。不过别抱我太久。我已经有一段时间没有用PHP编写代码了;他用的是一种叫phpclasses的东西。