Php 访问(返回)类内私有函数中的变量
我有这样的类,我想把变量带到外部(我猜是返回),这样我就可以用它做一些事情了Php 访问(返回)类内私有函数中的变量,php,Php,我有这样的类,我想把变量带到外部(我猜是返回),这样我就可以用它做一些事情了 class MyClass{ private function MyPrivate(){ $rows = 'SomeVar'; echo $rows.' is echoed from inside'; //return $rows; return $this->rows; }
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(变量)。但我很惊讶它能起作用。
在过去的两天里,我一直在网上阅读文档和教程,但这个问题需要尽快解决,这就是我发表文章的原因。请帮忙。谢谢。当您使用
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';
class-MyClass{
私有函数MyPrivate(){
$rows='SomeVar';
echo$rows.“从内部回声”;
返回$rows;
}
函数Foo(){
返回$this->MyPrivate();
}
}
$myclass=新的myclass;
$rows=$myclass->Foo();
回声“
”;
echo$rows.“从外部回声”;
您可以执行以下操作:
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';
class-MyClass{
私有函数MyPrivate(){
$rows='SomeVar';
echo$rows.“从内部回声”;
//返回$rows;
返回$rows;
}
函数Foo(){
返回$this->MyPrivate();
//$this->rows;
}
//返回$rows;
//返回$this->rows;
}
$myclass=新的myclass;
$rows=$myclass->Foo();
//$myclass->rows;
回声“
”;
echo$rows.“从外部回声”;
此处的代码板:尝试将$rows设置为成员变量:
class MyClass
{
public $rows;
private function myPrivate()
{
$this->rows = 1;
}
function Foo(){
$this->MyPrivate();
}
}
$myclass = new MyClass();
$myclass->foo();
$rows = $myclass->rows;
您确实应该在类中显式声明变量。此外,没有理由担心从不同的函数返回行,只需将其设置为类的成员,将其可见性设置为public,并在类内外访问即可 看起来您还混淆了函数中的局部变量和类成员变量。必须始终使用
$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.';
那么,为什么不直接返回您想要使用的值呢?很酷,谢谢您向我介绍codepad。我不知道php中存在这样的东西。
<?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.';