Php 无法从分数类访问属性
所以我有一个与分数相关的php类,我做一些计算,当它出现时 要访问值,请执行以下操作: var_转储输出以获取以下内容: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
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的东西。