我有一个代码片段,如下所示:
var_dump($download2);
$this->download->filename = $download2->filename.'.'.$ext;
$this->download->filepath = $this->tmpDir.'/'.$this->download->filename;
var_dump($download2);
我的第一个var_dump
返回此信息:
object(stdClass)#730 (2) {
["filename"]=>
string(10) "ol8kw2q55b"
["filepath"]=>
string(66) "a/path/storage/photos/tmp/ol8kw2q55b"
}
第二个var_dump
会返回此信息:
object(stdClass)#730 (2) {
["filename"]=>
string(15) "ol8kw2q55b.jpeg"
["filepath"]=>
string(71) "a/path/storage/photos/tmp/ol8kw2q55b.jpeg"
}
为什么$this->download->filename = $download2->filename.'.'.$ext;
更新了我的$download2
变量(如果我删除该行var_dump
将返回相同的值)?
我的课看起来像这样(删除了一些代码):
<?php
class MyClass {
protected $download;
public function download($url) {
$filename = $this->newHash();
$this->download = (object)[
'filename' => $filename,
'filepath' => $this->tmpDir.'/'.$filename
];
return $this->download;
}
public function addExtension($download2) {
$ext = $this->allowedMimes[$mimeType];
var_dump($download2);
$this->download->filename = $download2->filename.'.'.$ext;
$this->download->filepath = $this->tmpDir.'/'.$this->download->filename;
var_dump($download2);
return $this->download;
}
}
我用它运行它:
$class = new MyClass;
$var = $class->download("http://...");
$class->addExtension($var);
答案 0 :(得分:1)
奇怪,
你能在这里粘贴所有课程文件吗?
我想知道$ download2变量的来源。也许$ this-&gt;下载是通过$ download2或其他东西的引用加载的。
尝试使用我提供的代码片段单独测试代码:
var_dump($download2);
$this->download->filename = $download2->filename.'.'.$ext;
$this->download->filepath = $this->tmpDir.'/'.$this->download->filename;
var_dump($download2);
输出:
object(stdClass)#2 (2) {
["filename"]=>
string(4) "mama"
["filepath"]=>
string(3) "dir"
}
object(stdClass)#2 (2) {
["filename"]=>
string(4) "mama"
["filepath"]=>
string(3) "dir"
}
另外:
以下行: $ var = $ class-&gt; download(“http:// ...”);
实际上会返回$ this-&gt;下载变量,然后返回
我看到你将它传递给第二种方法:
$类 - &GT; addExtension($变种);
因此,实际下载2与$ this-&gt;下载对象相同。
第一个var_dump()输出$ this-&gt; download
的第一个值object(stdClass)#2(2){ [ “文件名”] =&GT; string(8)“XDEFEFEQ” [ “文件路径”] =&GT; string(9)“/ XDEFEFEQ” }
由于$ this-&gt;下载被自动更改,$ download2变量会自动更改。