2013-05-26 3 views
0

Как использовать $ _GET в классе php? Я пытался сделать так:

class UploadHandler 
{ 
    public $a = $_GET['size']; 
} 

Он всегда дает мне ошибку

+1

сообщение Какую ошибку вы получаете? – Arjan

ответ

5

Try:

class UploadHandler 
{ 
    public $a; 
    function __construct() { 
     $this->a = isset($_GET['size']) ? $_GET['size'] : null; 
    } 
} 
+3

Это. Вы не можете назначить динамическую переменную в объявлении класса. Для этого вам нужно использовать метод (будь то внутри или вне класса). –

+1

красиво сделано, +1 для тернарного оператора - о и получить его правильно –

+0

Sébastien, __construct() - это метод? – Farkie

0

Ваша цель, чтобы получить размер файла загрузки? Если это так, вы хотите использовать переменную $ _FILES. http://php.net/manual/en/reserved.variables.files.php В частности, http://www.php.net/manual/en/features.file-upload.post-method.php

Технически нет причин, по которым класс не может получить доступ к глобальной переменной. Однако лучшие практики могут предполагать, что ваш контроллер/шлюз вытаскивает данные и передает их классу. например

<? 
    $uploaded_file = $_FILES['userfile']['tmp_name']; 

    $UploadHandler = new UploadHandler(); 
    $permanent_local_path = $UploadHandler->saveFileSomewhere($uploaded_file); 

?> 
0

Попробуйте это:

class UploadHandler 
{ 
    public $a; 
    public function __construct(){ 
     if(isset($_GET['size']){ 
      $this->a = $_GET['size']; 
     }else{ 
      $this->a = null // or maybe 0 
     } 
    } 
} 
Смежные вопросы