web-dev-qa-db-ja.com

解析エラー:構文エラー、予期しない「(」、「、」または「;」が必要です

次の解析エラーが表示されます。

解析エラー:構文エラー、予期しない '('、 '、'または ';が必要です'が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;
        }
}

解析エラーの原因は何ですか?

17
crmepham

メンバー変数を静的でないものに初期化することはできず、関数を呼び出そうとしています。

マニュアル から:

この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できなければならず、評価のために実行時情報に依存してはなりません。

回避策は、コンストラクターで変数を設定することです。

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

あなたはこれを行うことができません:

private $image_dimensions = getimagesize($temp_dir);

関数、変数、その他静的でないものは、クラス変数を設定するために呼び出すことはできません。

4
Tyler Carter