2017-04-11 17 views
0

私はここで信じられないほど愚かなものを逃しているように感じます。私は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"}]} 
+0

vardumpはvar_dumpである必要があります。 – Nikkorian

+0

私はコードを修正しましたが、同じ問題が残っています。 – thebarless

+0

あなたの問題が実際には分からないのですか? _suppose_の出力はどのように表示されますか? –

答えて

1

私はあなたがこの方法を試してみてくださいと思う:

require('UploadHandler.php'); 
$upload_handler = new UploadHandler(); 
$myAWSresponse = $upload_handler->post(); 
var_dump($myAWSresponse); 
0

私はあなたのようなfunction post()にクラスプロパティにアクセスするために$this->AWSresponseを使うべきだと思う:

return $this->AWSresponse; 

とあなたのよう$AWSresponse使用$this->AWSresponseに値を割り当てるとき:

$this->AWSresponse = $this->generate_response(
     array($this->options['param_name'] => $files), 
     $print_response 
    ); 
+0

私はクラスの外から呼び出す場合、$が動作しますか? – thebarless

+0

「$ this」は、「現在の」オブジェクトのインスタンスを参照しています。 – domsson

+0

さて、それは私が思ったことです。たぶん私は頭の中でこれをワゴンする前にカートです。クラスは私がやりたいことをしており、ブラウザのコンソールにデータを出力しています。私はクラスを修正する必要があると思って間違っていますか? – thebarless

関連する問題