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.';