【问题标题】:PHP Class won't return to a StringPHP 类不会返回字符串
【发布时间】:2010-11-11 14:08:48
【问题描述】:

我对 PHP 还很陌生,所以在学习的过程中遇到了一个小问题:

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

<?php

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

    public function stripVars($vars)
    {

        return $vars;
    }
}
?>

然后我尝试向公共函数 stripVars 传递一个值:

<?php

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

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

?>

但是,我得到了这个错误:

( ! ) 可捕获的致命错误:DataStrip 类的对象无法在 myfilepath

中转换为字符串

...关于我在这里可能做错的任何建议?现在这只是一个测试功能,因为我正在尝试习惯 OOP PHP。 :)

【问题讨论】:

  • 我假设stripVars() 的给定实现中缺少代码?可以加吗?
  • 你的意思是echo($a-&gt;stripVars($projCat));

标签: php oop class return


【解决方案1】:

如果你想这样做...你需要声明方法 __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】:

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

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

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

    【讨论】:

    • 保罗,谢谢。当我试图引用它时,我没有意识到 $a 是一个对象。
    【解决方案3】:

    你不应该返回一个变量:

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

    当您 echo $a 时,您是在回显对象 - 而不是其中的任何特定函数或变量(因为当您声明 $a 时,您将其声明为类中的所有内容 - 变量、函数、整个工具包和卡布多。

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

    【讨论】:

      猜你喜欢
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多