我有这种类,我想把变量带到外面(我想回来),这样我就可以用它来做。
class MyClass{
private function MyPrivate(){
$rows = 'SomeVar';
echo $rows.' is echoed from inside';
//return $rows;
return $this->rows;
}
function Foo(){
$this->MyPrivate();
//$this->rows;
}
//return $rows;
//return $this->rows;
}
$myclass = new MyClass;
$myclass->Foo();
//$myclass->rows;
echo '<br />';
echo $rows.'is echoed from outside';
类中私有函数内部的回声变量有效,但外部回显变量不起作用。注释掉的代码就是我试图用来实现想要的结果的代码。我没有上这堂课,所以我不想搞砸它并改变其中的任何内容,因为我担心它可能搞砸了。
这是我的出局:
SomeVar is echoed from inside
is echoed from outside
正如您在第二个实例中看到的,没有SomeVar(变量)存在。我很惊讶它正在工作。 我正在阅读过去两天在网上的文档和教程,但这需要尽快解决,这就是我发布的原因。请帮忙。感谢。
答案 0 :(得分:4)
使用return
语句时,应将其分配给变量。此外,您应该返回$rows
,而不是$this->rows
,因为它们实际上是不同的变量:
class MyClass{
private function MyPrivate(){
$rows = 'SomeVar';
echo $rows.' is echoed from inside';
return $rows;
}
function Foo(){
return $this->MyPrivate();
}
}
$myclass = new MyClass;
$rows = $myclass->Foo();
echo '<br />';
echo $rows.'is echoed from outside';
答案 1 :(得分:1)
你真的应该在你的类中明确声明你的变量。此外,没有理由担心从不同的功能中返回行 - 只需将其设为您的班级成员,将其设置为公开,并在班级内外访问它。
看起来你在函数和类成员变量中的局部变量之间也感到困惑。您必须始终使用$this->
来访问该班级的成员。
<?php
class MyClass
{
public $rows;
private function MyPrivate()
{
$this->rows = "Low-level programming is good for the programmer's soul --J. Carmack";
echo $this->rows . ' is echoed from inside';
}
function Foo()
{
$this->MyPrivate();
}
}
$obj = new MyClass;
$obj->Foo();
echo $obj->rows . ' is echoed from outside.';
答案 2 :(得分:0)
class MyClass{
private function MyPrivate(){
$rows = 'SomeVar';
echo $rows.' is echoed from inside';
//return $rows;
return $rows;
}
function Foo(){
return $this->MyPrivate();
//$this->rows;
}
//return $rows;
//return $this->rows;
}
$myclass = new MyClass;
$rows = $myclass->Foo();
//$myclass->rows;
echo '<br />';
echo $rows.'is echoed from outside';
答案 3 :(得分:0)
尝试将$ rows设置为成员var:
class MyClass
{
public $rows;
private function myPrivate()
{
$this->rows = 1;
}
function Foo(){
$this->MyPrivate();
}
}
$myclass = new MyClass();
$myclass->foo();
$rows = $myclass->rows;