我对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。 :)
答案 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的问题,所以如果我错了请纠正:)