Ошибка разбора: синтаксическая ошибка, неожиданный '(', ожидающий ',' или ';' в
Я получаю следующую ошибку разбора:
Ошибка разбора: синтаксическая ошибка, неожиданный '(', ожидающий ',' или ';' в H:\Programs\USBWebserver v8.5\8.5\root\oopforum\func\register.class.php в строке 7
который относится к следующей строке кода в моем классе:
private $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
Я не могу понять, почему эта строка кода вызовет ошибку разбора?
Вот некоторый окружающий код:
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;
}
}
Что вызывает ошибку разбора?
2 ответа
Вы не можете инициализировать переменные-члены для чего-либо, что не является статичным, и вы пытаетесь вызвать функцию.
Из руководства:
Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.
Обходной путь должен установить вашу переменную в конструкторе:
private $random_name;
public function __construct() {
$this->random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
}
Вы не можете сделать это:
private $image_dimensions = getimagesize($temp_dir);
Функции, переменные и все, что не является статичным, не могут быть вызваны для установки переменных класса.