这可能是一个非常noob的问题,但我似乎无法在任何地方找到答案。是否可以在组件中创建自己的函数并在同一组件中调用它?
示例:
Class myComponent extends Component{
public function doSomething(){
doThis();
$b = $a + 2;
return $b;
}
function doThis(){
$a = 0;
}
}
答案 0 :(得分:4)
你在这里混淆了几件事。
您通常可以毫无问题地创建 对象方法 。您必须将它们称为对象方法:
public function doSomething() {
$this->doThis();
...
}
只是调用doThis()
不会在调用范围内神奇地创建变量$a
。该变量将在doThis
内创建,并将包含在那里。这是一件好事。您必须明确return
方法中的值才能使其可用:
public function doSomething() {
$a = $this->doThis();
...
}
protected function doThis() {
return 0;
}
答案 1 :(得分:0)
变量范围意味着函数完成时$a
函数内的doThis
会丢失,但您可以这样做:
Class myComponent extends Component
{
public function doSomething()
{
$a=$this->doThis();
$b = $a + 2;
return $b;
}
function doThis()
{
$a = 0;
return $a;
}
}
我可能会使用这样的类属性:
Class myComponent extends Component
{
public $a;
public function doSomething()
{
$this->doThis();
$b = $this_.a + 2;
return $b;
}
public function doThis()
{
$this->a = 0;
}
}
类属性是通过函数更新信息的好方法。它们可以在任何地方访问整个班级。如果你通过public
声明它,如果可以直接通过类似的实例在类外使用:
$var=new myComponent();
// Crete a new instance of the object.
echo $var->a; // Outputs the value.
或者,您可以使用private
属性,这些属性在函数中对对象本身可见,但对于外部世界是不可见的(好吧,无论如何都无法访问)。