我刚开始使用面向对象的PHP,我遇到了以下问题:
我有一个包含一个包含某个脚本的函数的类。我需要在同一个类的另一个函数中调用位于该脚本中的变量。
例如:
class helloWorld {
function sayHello() {
echo "Hello";
$var = "World";
}
function sayWorld() {
echo $var;
}
}
在上面的例子中,我想调用$ var,它是在前一个函数中定义的变量。这不起作用,所以我该怎么做?
答案 0 :(得分:17)
你应该在类中创建var,而不是在函数中创建var,因为当函数结束时,变量将被取消(由于函数终止)......
class helloWorld {
private $var;
function sayHello() {
echo "Hello";
$this->var = "World";
}
function sayWorld() {
echo $this->var;
}
}
?>
如果您将变量声明为public
,则所有其他类都可以直接访问它,而如果您将变量声明为private
,则只能在同一个类中访问它。
<?php
Class First {
private $a;
public $b;
public function create(){
$this->a=1; //no problem
$thia->b=2; //no problem
}
public function geta(){
return $this->a;
}
private function getb(){
return $this->b;
}
}
Class Second{
function test(){
$a=new First; //create object $a that is a First Class.
$a->create(); // call the public function create..
echo $a->b; //ok in the class the var is public and it's accessible by everywhere
echo $a->a; //problem in hte class the var is private
echo $a->geta(); //ok the A value from class is get through the public function, the value $a in the class is not dicrectly accessible
echo $a->getb(); //error the getb function is private and it's accessible only from inside the class
}
}
?>
答案 1 :(得分:0)
使$var
成为一个类变量:
class HelloWorld {
var $var;
function sayHello() {
echo "Hello";
$this->var = "World";
}
function sayWorld() {
echo $this->var;
}
}
除非很多其他代码需要访问它,否则我会避免使它成为全局代码;如果它只是在同一个班级中使用的东西,那么这是一个班级成员的完美候选人。
如果您的sayHello()
方法随后调用了sayWorld()
,那么另一种方法是将参数传递给该方法。