解析错误:语法错误,意外'(',期待','或&#39 ;;' in

时间:2012-07-03 14:26:16

标签: php syntax-error

我收到以下解析错误:

  

解析错误:语法错误,意外'(',期待','或';'in   H:\程序\ USBWebserver   第7行的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;
        }
}

导致解析错误的原因是什么?

2 个答案:

答案 0 :(得分:37)

您无法将成员变量初始化为非静态的任何内容,并且您正在尝试调用函数。

来自the manual

  

这个声明可能包括初始化,但是这个   初始化必须是一个常量值 - 也就是说,它必须能够   在编译时进行评估,不得依赖于运行时   信息以便进行评估。

解决方法是在构造函数中设置变量:

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

答案 1 :(得分:4)

你不能这样做:

private $image_dimensions = getimagesize($temp_dir);

无法调用函数,变量和其他任何非静态函数来设置类变量。