我收到以下解析错误:
解析错误:语法错误,第7行的H:\ Programs \ USBWebserver v8.5 \ 8.5 \ root \ oopforum \ func \ register.class.php中出现语法错误,意外的’(’,期望的’,’或’;’
这与我的课程中的以下代码行有关:
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); }