こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでのエラー(unexpected T_STRING~)

PHP5で、以下のクラスで構文エラーが出てしまいます。

//===================================================
<?php
class fileUpload{

define (kakunou_PATH, "../cast_img/" .$_FILES["file_data1"]["name"]);
var $error_message;

function fileUpload($ftmp_name, $fsize;){
(省略)
}
}
//===================================================
*****エラーメッセージ********************************
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/sites/heteml/users61/v/e/n/venusline/web/config/fileUpload_class.php on line 5
*****************************************************
5行目はdefine()の行です。
ちなみにここでパスを定義してますが、
define()を使うのでは無く
var $path = 'パス名';
としても同じエラー。
また、$_FILESの記述を削っても同じエラーが出ます。
エラー文中のT_OLD_FUNCTION が気になったので、
一応コンストラクタを__constructにも変えてみたのですがやはりダメでした・・
どなたかエラーの原因が解る方、どうぞ宜しくお願いします。

投稿日時 - 2009-02-07 20:01:02

QNo.4697656

すぐに回答ほしいです

質問者が選んだベストアンサー

No1です。訂正です
ごめんなさい。fileUploadっていうメソッドは既にあったですね・・・
php5だと
class fileUpload{

const kakunou_PATH = "../cast_img/";
protected $_path;
protected $error_message;

function __construct($ftmp_name, $fsize){
$this->_path = self::kakunou_PATH.$_FILES["file_data1"]["name"];
//(省略)
}
}
//end of class

php4だとこうです。
class fileUpload{

const kakunou_PATH = "../cast_img/";
var $_path;
var $error_message;

function fileUpload($ftmp_name, $fsize){
$this->_path = self::kakunou_PATH.$_FILES["file_data1"]["name"];
//(省略)
}
}
//end of class

投稿日時 - 2009-02-07 21:07:43

補足

#1さん>お返事ありがとうございます☆
確かにコンストラクタの前でグローバル変数を突っ込むのはおかしいですね・・(_ _;)
constも勉強になりました!
しかしご教示の通り、自分でも間違いを納得しつつ以下のソースへ直しましたが、まだ同じエラーが出てしまいます。(行数も同じ)
---今回は修正ソースをまんまコピペしてます-----------------------
<?php

class fileUpload{

const kakunou_PATH = "../cast_img/";
var $_path;
var $error_message;

function fileUpload($ftmp_name, $fsize){
$this->_path = self::kakunou_PATH.$_FILES["file_data1"]["name"];
if ($fsize == 0) {

$this->error_message = "ファイルが存在しません";

return $this->error_message;
exit;

} else {//アップロードファイルされたテンポラリファイルをファイル格納パスにコピーする

$result = @move_uploaded_file($ftmp_name, $this->filename);

if ($result == "true") {
$this->error_message = "0";
} else {
$this->error_message = "アップロード失敗";
}
}
return $this->error_message;
}
}
------------------------------------------------------------
初めは#2さんのおっしゃる通りネストチェックもしてみたのですが・・
前回と全く同じエラー文なので、エラー行は最初の定義行
const kakunou_PATH
ということになります。私にはこの行以外のどこかに間違いがあるように思えるのですが・・

投稿日時 - 2009-02-09 23:12:18

ANo.3

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.2

Parse error なんで、一つ前の行で括弧が足りないとか;が抜けてるとか言うことは無いでしょうか。

投稿日時 - 2009-02-07 21:06:58

ANo.1

根本的にPHP(というか他の言語でもいえますが)の文法を理解されていないのではないでしょうか?

class内定数は、defineはなく、constで定義します。

const kakunou_PATH = "../cast_img/" .$_FILES["file_data1"]["name"];
ただし、これもエラーです。
class内定数は、変数を代入できません。というか、グローバル変数をここで突っ込むこと事態がおかしいことです。
const kakunou_PATH = "../cast_img/";
と定義しておいて、
const kakunou_PATH = "../cast_img/";
protected $_path;
public function __construct(){
$this->_path = self::kakunou_PATH.$_FILES["file_data1"]["name"];
}
コンストラクタで $this->_pathに突っ込んでおきましょう。

さらに、ここ。
function fileUpload($ftmp_name, $fsize;){
$fsize の後の「;」は不要
function fileUpload($ftmp_name, $fsize){
こうなります。

まとめると

class fileUpload{

const kakunou_PATH = "../cast_img/";
protected $_path;
protected $error_message;

public function __construct(){
$this->_path = self::kakunou_PATH.$_FILES["file_data1"]["name"];
}
function fileUpload($ftmp_name, $fsize){
//(省略)
}
}
//end of class

こんな感じです。
ただし、PHP5での書き方です。PHP4だと
class fileUpload{

const kakunou_PATH = "../cast_img/";
var $_path;
var $error_message;

public function fileUpload(){
$this->_path = self::kakunou_PATH.$_FILES["file_data1"]["name"];
}
function fileUpload($ftmp_name, $fsize){
//(省略)
}
}
//end of class

こんな感じです。

投稿日時 - 2009-02-07 21:04:05

-広告-
-広告-
-広告-
-広告-