Je reçois l'erreur d'analyse suivante:
Erreur d'analyse: erreur de syntaxe, inattendue '(', attend ',' ou ';' dans H:\Programs\USBWebserver v8.5\8.5\root\oopforum\func\register.class.php sur la ligne 7
qui se rapporte à la ligne de code suivante dans ma classe:
private $random_name = Rand(1000,9999).Rand(1000,9999).Rand(1000,9999).Rand(1000,9999);
Je ne vois pas pourquoi cette ligne de code provoquerait une erreur d'analyse?
Voici un code environnant:
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;
}
}
Quelle est la cause de l'erreur d'analyse?
Vous ne pouvez pas initialiser les variables membres à quelque chose qui n'est pas statique et vous essayez d'appeler une fonction.
De le manuel :
Cette déclaration peut inclure une initialisation, mais cette initialisation doit être une valeur constante, c'est-à-dire qu'elle doit pouvoir être évaluée au moment de la compilation et ne doit pas dépendre des informations d'exécution pour être évaluée.
La solution de contournement consiste à définir votre variable dans le constructeur:
private $random_name;
public function __construct() {
$this->random_name = Rand(1000,9999).Rand(1000,9999).Rand(1000,9999).Rand(1000,9999);
}
Vous ne pouvez pas faire ça:
private $image_dimensions = getimagesize($temp_dir);
Les fonctions, les variables et tout autre élément non statique ne peuvent pas être appelés pour définir des variables de classe.