Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法将类的对象转换为字符串_Php - Fatal编程技术网

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 ;