PHP类不会返回String

时间:2009-07-17 02:25:36

标签: php oop class return

我对PHP很新,所以我在学习时遇到一个小问题:

我构建了一个名为DataStrip.php的类

<?php

final class DataStrip
{
    public function DataStrip()
    {
        // constructor  
    }

    public function stripVars($vars)
    {

        return $vars;
    }
}
?>

然后我试图传递public function stripVars一个值:

<?php

    include_once ('lib/php/com/DataStrip.php');

    echo($projCat);
    $a = new DataStrip;
    $a->stripVars($projCat);
    echo($a);

?>

然而,我收回了这个错误:

  

(!)可捕获的致命错误:无法将类DataStrip的对象转换为 myfilepath 中的字符串

......或许对我在这里做错了什么建议?现在这只是一个测试功能,因为我正在尝试习惯OOP PHP。 :)

3 个答案:

答案 0 :(得分:11)

您期望它发生什么?您没有将stripVars返回的结果保存到变量中:

$result = $a->stripVars($projCat);
print $result;

您要做的是打印对象变量本身。如果要控制尝试打印对象时发生的情况,则需要定义__toString method

答案 1 :(得分:4)

如果你想这样做......你需要声明方法__toString()

    <?php

    final class DataStrip
    {
    private $vars;

            public function DataStrip()
            {
                    // constructor  
            }

            public function stripVars($vars)
            {

                    $this->vars = $vars;
            }

            public function __toString() {

             return (string) $this->vars;
            }


    }

// then you can do

 $a = new DataStrip;
    $a->stripVars($projCat);
    echo($a);

    ?>

答案 2 :(得分:1)

你不应该回到变量:

$projCat = $a->stripVars($projCat);

当你echo $a回显对象时 - 它内部没有任何特定的函数或变量(因为当你声明$a时,你宣称它是类中的所有东西 - 变量,函数,整个工具包和kaboodle。

我也有php oop的问题,所以如果我错了请纠正:)