私はここで信じられないほど愚かなものを逃しているように感じます。私はOOPプリンシパル、特にPHPに精通しておらず、学習しようとしています。 PHPでクラスメソッドのプロパティにアクセスするにはどうすればよいですか?私は特に、このメソッドから返される$ AWSresponseプロパティを取得したいと考えています。 JSON形式の$ AWSresponseの値は次のとおりです。私が持っているのindex.phpでメソッドによって生成されたPHPクラスプロパティへのアクセス
public $AWSresponse;
public function post($print_response = true) {
if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
return $this->delete($print_response);
}
$upload = isset($_FILES[$this->options['param_name']]) ?
$_FILES[$this->options['param_name']] : null;
// Parse the Content-Disposition header, if available:
$file_name = $this->get_server_var('HTTP_CONTENT_DISPOSITION') ?
rawurldecode(preg_replace(
'/(^[^"]+")|("$)/',
'',
$this->get_server_var('HTTP_CONTENT_DISPOSITION')
)) : null;
// Parse the Content-Range header, which has the following form:
// Content-Range: bytes 0-524287/2000000
$content_range = $this->get_server_var('HTTP_CONTENT_RANGE') ?
preg_split('/[^0-9]+/', $this->get_server_var('HTTP_CONTENT_RANGE')) : null;
$size = $content_range ? $content_range[3] : null;
$files = array();
if ($upload && is_array($upload['tmp_name'])) {
// param_name is an array identifier like "files[]",
// $_FILES is a multi-dimensional array:
foreach ($upload['tmp_name'] as $index => $value) {
$files[] = $this->handle_file_upload(
$upload['tmp_name'][$index],
$file_name ? $file_name : $upload['name'][$index],
$size ? $size : $upload['size'][$index],
$upload['type'][$index],
$upload['error'][$index],
$index,
$content_range
);
}
} else {
if(isset($_POST['fileSourceChooser']) && $_POST['fileSourceChooser']=='dropbox'){
//http://justinvincent.com/page/1087/how-to-get-the-mime-type-of-a-remote-file-in-php-with-redirects
function get_url_mime_type($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_exec($ch);
return curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
}
$upload=$_POST['files']; ////if just a regular post
$upload['parse_url']=parse_url($upload['link']);
$upload['url']='https://dl.dropboxusercontent.com'.$upload['parse_url']['path'];
$files[] = $this->handle_file_upload(
$upload['url'],
$file_name ? $file_name : $upload['name'],
$size ? $size : $upload['bytes'],
get_url_mime_type($upload['url']),
"",
null, null,
$content_range
);
file_put_contents(
$this->options['upload_dir'].'thumbnail/'.$upload['name'],
fopen($upload['thumbnail'], 'r'),
FILE_APPEND //$append_file ? FILE_APPEND : 0
);
}
else{
// param_name is a single object identifier like "file",
// $_FILES is a one-dimensional array:
$files[] = $this->handle_file_upload(
isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
$file_name ? $file_name : (isset($upload['name']) ?
$upload['name'] : null),
$size ? $size : (isset($upload['size']) ?
$upload['size'] : $this->get_server_var('CONTENT_LENGTH')),
isset($upload['type']) ?
$upload['type'] : $this->get_server_var('CONTENT_TYPE'),
isset($upload['error']) ? $upload['error'] : null,
null,
$content_range
);
}
}
$AWSresponse = $this->generate_response(
array($this->options['param_name'] => $files),
$print_response
);
return $AWSresponse;
}
::私はポスト()メソッド(フルUploadHandler.phpクラスはhereで)持ってUploadHandler.phpで
require('UploadHandler.php');
$upload_handler = new UploadHandler();
$r = $upload_handler->AWSresponse;
var_dump($r); // returns NULL
このクラスを(と関連するjqueryプラグイン)は、$ AWSresponseから次のものをブラウザのコンソールにダンプします。
{"files":[{"name":"Test(7).mov","size":1202952,"type":"video\/quicktime","url":"https:\/\/prefix.s3.amazonaws.com\/bucket\/Test%20%287%29.mov","deleteUrl":"https\/\/mysite.com\/server\/php\/?file=Test%20%287%29.mov&_method=DELETE","deleteType":"POST"}]}
vardumpはvar_dumpである必要があります。 – Nikkorian
私はコードを修正しましたが、同じ問題が残っています。 – thebarless
あなたの問題が実際には分からないのですか? _suppose_の出力はどのように表示されますか? –