【问题标题】:Parse error: syntax error, unexpected '(', expecting ',' or ';' in解析错误:语法错误,意外的 '(',期待 ',' 或 ';' in
【发布时间】:2012-07-04 00:16:08
【问题描述】:

我收到以下解析错误:

解析错误:语法错误,意外 '(',期待 ',' 或 ';' in 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;
        }
}

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

【问题讨论】:

    标签: php syntax-error


    【解决方案1】:

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

    来自the manual

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

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

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

    【讨论】:

    • 谢谢..我删除了除了设置 $random_name 变量的行并将其放在 __construct() 内的所有其他内容,它给了我这个错误Parse error: syntax error, unexpected T_PRIVATE in H:\Programs\USBWebserver v8.5\8.5\root\oopforum\func\register.class.php on line 14
    • 您必须使用完整课程更新您的问题以确定该错误,因为它可能与您之前的错误无关。
    • @crm - 您需要将private $random_name; 放在构造函数之外,然后完全按照我的帖子中的方式复制构造函数中的行。我已经更新了我的答案以显示它是如何完成的。
    【解决方案2】:

    你不能这样做:

    private $image_dimensions = getimagesize($temp_dir);
    

    不能调用函数、变量和其他任何非静态的东西来设置类变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 2021-11-05
      • 2012-06-13
      • 1970-01-01
      • 2016-01-29
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多