Я получаю следующую ошибку синтаксического анализа:
Ошибка анализа: синтаксическая ошибка, неожиданный '(', ожидающий ',' или ';' в 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; } }
Что вызывает ошибку синтаксического анализа?
Вы не можете инициализировать переменные-члены для чего-либо, что не является статичным, и вы пытаетесь вызвать функцию.
Из руководства :
Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Обходным путем является установка переменной в конструкторе:
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);
Функции, переменные и все, что не статично, нельзя вызывать для установки переменных класса.