Php 无法将类的对象转换为字符串
我有以下代码:Php 无法将类的对象转换为字符串,php,Php,我有以下代码: class int64(){ var $h; var $l; function int64(){ $this->$h=$h; $this->$l=$l; } } function int64copy($dst,$src){ $dst.$h = $src.$h; $dst.$l = $src.$l; } 调用函数int64copy时,其语句可捕获致命错误:类int64的对象无法转换为第行中的字符
class int64(){
var $h; var $l;
function int64(){
$this->$h=$h;
$this->$l=$l;
}
}
function int64copy($dst,$src){
$dst.$h = $src.$h;
$dst.$l = $src.$l;
}
调用函数int64copy
时,其语句可捕获致命错误:类int64的对象无法转换为第行中的字符串
有什么想法吗 不能在对象上使用doc表示法-它试图连接对象,因此调用int64::\uu toString()-失败 编辑:更好的示例:
class int64 {
public $h;
public $l;
function __construct($h, $l) {
$this->h = $h;
$this->l = $l;
}
public function __toString()
{
return sprintf('h: %s, l: %s', $this->h, $this->l);
}
}
$a = new int64(1, 2);
$b = clone $a;
echo $a;
访问属性的符号是
$obj->prop
。这是一个->
,后面没有$
。在类内和类外使用的
是字符串连接运算符
再加上一些其他小的修复,您应该可以:
class int64 {
public $h,
$l;
public function int64(){
$this->h = $h;
$this->l = $l;
}
}
function int64copy($dst, $src){
$dst->h = $src->h;
$dst->l = $src->l;
}
int64::int64()
中的$h
和$l
变量仍然存在问题。这些应该来自哪里?您所需要的只是:创建具有完全复制属性的对象副本并不总是想要的行为
使用这个,它表示不能访问同一行中的空属性,在
$dst->$h
我在哪里使用克隆操作符,请不要介意-我是新加入您的类,替换函数int64(){
for公共函数u构造($h,$l)
实例化对象时,将值传递给$h
和$l
,这是因为美元符号。我已更新了example@CraigMason您忘记了在构造函数中删除美元符号。这个错误似乎只是对对象和/或PHP语法缺乏理解的一个小症状。
class int64 {
public $h;
public $l;
function __construct() {
}
}
$src = new int64();
$src->h = "h";
$src->l = "l";
$dst = clone $src ;
echo $dst->h , " " , $dst->l ;