我几天前开始用PHP编写新课程。
我想在其他方法中使用的方法中声明一个新的“公共属性”。
这就是我的想法(当然它不起作用!):
class hello {
public function b() {
public $c = 20; //I'd like to make $c usable by the method output()
}
public function output() {
echo $c;
}
}
$new = new hello;
$new->output();
提前感谢任何提示。
答案 0 :(得分:6)
我想在其他方法中使用的方法中声明一个新的“公共属性”。
如果其他方法属于同一个类,则不需要公共属性,私有属性将满足您的需求。私有属性只能在同一个类中访问,这有助于简化操作。
还要了解声明属性和为其分配值之间的区别。加载代码时进行声明,并在执行时进行分配。因此,声明(或定义)属性(私有或公共)需要PHP语法中的特殊位置,即在类的主体中而不是在函数内部。
您可以使用PHP中的特殊变量$this
来访问类中的属性。
从对象上下文中调用方法时,伪变量
$this
可用。$this
是对调用对象的引用(通常是方法所属的对象[to])。 From PHP Manual
私有财产示例:
class hello {
private $c; # properties defined like this have the value NULL by default
public function b() {
$this->c = 20; # assign the value 20 to private property $c
}
public function output() {
echo $this->c; # access private property $c
}
}
$new = new hello;
$new->output(); # NULL
$new->b();
$new->output(); # 20
希望这有帮助。您使用私有属性,因为程序中的其他所有内容都不需要关心它,因此在您的类中,您知道没有其他任何东西可以操纵该值。另见VisibilityDocs。
答案 1 :(得分:2)
当你在方法(函数)中定义它时,类的每个变量都是公共的!您可以通过以下方式执行此操作:
class hello {
public function b() {
$this->c = 20;
}
public function output() {
echo $this->c;
}
}
$new = new hello;
$new->output();
或让函数b()
返回$c
,然后将其作为变量传递给output()
:
class hello {
public function b() {
return $c = 20;
}
public function output($c) {
echo $c;
}
}
$new = new hello;
$c = $new->b();
$new->output($c);
记住函数中的所有变量只能从该特定函数中访问...除非你当然使用$this
,这使变量成为类属性!
此外,建议只使用return
个变量......如果您知道我的意思,那么echo仅适用于实际输出,纯HTML,模板和视图:)
答案 2 :(得分:2)
请改为尝试:
class hello {
public $c = null;
public function b() {
$this->c = 20; //I'd like to make $c usable by the method output()
}
public function output() {
echo $this->c;
}
}
答案 3 :(得分:1)
class hello {
public $c;
public function b() {
$this->c = 20;
}
public function output() {
$this->c;
}
}
答案 4 :(得分:1)
注意:如果您需要在其他方法中使用某个属性,则无需将该方法声明为公共属性,则应将该属性声明为私有,并且您可以访问财产没有问题:
class hello {
private $c;
public function b() {
$this->c = 20;
}
public function output() {
$this->c;
}
}
答案 5 :(得分:0)
class hello { public $c; public function b() { $this->c = 20; //I'd like to make $c usable by the method output() } public function output() { return $this->c; } } $new = new hello; echo $new->output();
答案 6 :(得分:0)
class hello {
var $c;
function __construct() { // __construct is called when creating a new instance
$this->c = 20;
}
public function getC() {
return $this->c;
// beter to return a value this way you can later decide what to do with the value without modifying the class
}
}
$new = new hello; // create new instance and thus call __construct().
echo $new->getC(); // echo the value
答案 7 :(得分:0)
像这样重写这段代码: -
class hello {
public $c;
public function b() {
public $this->c = 20; //I'd like to make $c usable by the method output()
}
public function output() {
echo $this->c;
}
}
$new = new hello;
$new->output();