2012-07-03 15 views
16

sto recieveing ​​il seguente errore di analisi:Errore di analisi: errore di sintassi, inaspettata '(', in attesa '' o ';' in

Parse error: syntax error, unexpected '(', expecting ',' or ';' in H:\Programs\USBWebserver v8.5\8.5\root\oopforum\func\register.class.php on line 7

che riguarda la seguente riga di codice nella mia classe:

private $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999); 

non riesco a capire il motivo per cui questa riga di codice potrebbe causare un errore di analisi

Ecco alcuni codice circostante:?

class register{ 
    public $post_data = array(); 
     private $dbh; 
     private $allowed_type = array('image/jpeg','image/png','image/gif'); 
     private $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999); 
     private $path = 'img/thumb_/'.$random_name. $_FILES['file']['name']; 
     private $max_width = 4040; 
     private $max_height = 4040; 
     private $max_size = 5242880; 
     private $temp_dir = $_FILES['file']['tmp_name']; 
     private $image_type = $_FILES['file']['type']; 
     private $image_size = $_FILES['file']['size']; 
     private $image_name = $_FILES['file']['name']; 
     private $image_dimensions = getimagesize($temp_dir); 
     private $image_width = $image_dimensions[0]; // Image width 
     private $image_height = $image_dimensions[1]; // Image height 
     private $error = array(); 

     public function __construct($post_data, PDO $dbh){ 
     $this->post_data = array_map('trim', $post_data); 
     $this->dbh = $dbh; 
     } 
} 

Che cosa sta causando l'errore di analisi?

risposta

35

Non è possibile inizializzare le variabili membro su qualsiasi cosa che non sia statica e si sta tentando di chiamare una funzione.

Da the manual:

This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

La soluzione è di impostare la variabile nel costruttore:

private $random_name; 
public function __construct() { 
    $this->random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999); 
} 
+3

+1 mi ha battuto su di esso – Jacco

+0

Grazie .. Ho rimosso tutto il resto tranne la riga per impostare la variabile $ random_name e collocato all'interno di __construct() e mi dà questo errore 'Errore Parse: errore di sintassi, T_PRIVATE imprevisto in H: \ Programmi \ USBWebserver v8.5 \ 8.5 \ root \ oopforum \ func \ register.class.php sulla riga 14' – crm

+0

Dovrai aggiornare la tua domanda con la classe completa per determinare l'errore, in quanto è probabilmente non correlato a il tuo precedente – nickb

4

Non si può fare questo:

private $image_dimensions = getimagesize($temp_dir); 

funzioni, variabili, e qualsiasi altra cosa non statica non può essere chiamata per impostare variabili di classe.

Problemi correlati