2012-07-03 9 views
16

ich folgende Parse-Fehler am recieveing:Parse error: Syntaxfehler, unerwartete '(', erwarten '' oder '' 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

, die in meiner Klasse auf die folgende Codezeile bezieht:

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

ich kann nicht sehen, warum diese Zeile Code ein Parse-Fehler verursachen würde

hier etwas umgebenden Code:

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; 
     } 
} 

Was verursacht den Parse-Fehler?

Antwort

35

Sie können Elementvariablen nicht mit statischem Inhalt initialisieren, und Sie versuchen, eine Funktion aufzurufen.

Von 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.

Die Abhilfe Ihre Variable im Konstruktor setzen:

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

+1 – Jacco

+0

Danke..ich entfernte alles andere außer der Zeile, um die Variable $ random_name zu setzen, und legte das innerhalb der __construct() und es gibt mir diesen Fehler 'Parse Fehler: Syntaxfehler, unerwartete T_PRIVATE in H: \ Programme \ USBWebserver v8.5 \ 8.5 \ root \ oopforum \ func \ register.class.php in Zeile 14' – crm

+0

Sie müssen Ihre Frage mit der vollständigen Klasse aktualisieren, um diesen Fehler zu ermitteln, da dies wahrscheinlich nichts damit zu tun hat deine vorherige. – nickb

4

Sie können dies nicht tun:

private $image_dimensions = getimagesize($temp_dir); 

Funktionen, Variablen, und alles andere, was nicht statisch ist, kann nicht aufgerufen werden, um Klassenvariablen zu setzen.

Verwandte Themen