2012-03-05 4 views
1

コードイグナイターでユーザーモデルを作成しました。PHPで予期しないT_NEWエラーが発生するのはなぜですか?

class User extends CI_Model { 
    function __construct() { 
     parent::__construct(); 
    } 

    public function new($username, $email, $password, $studentID="") { 
     $this->db->query("INSERT INTO user VALUES (0, '$username', '$email', '$password', '$studentID')"); 
    } 
} 

ただし、このPHPエラーが発生しています。

Parse error: syntax error, unexpected T_NEW, expecting T_STRING in /home/davidfaux/testApp/application/models/user.php on line 12 

行12は、この行です。

T_NEWとは何ですか?エラーが発生するのはなぜですか?

+2

'public function new'は' public function newUser'でなければなりません。 Newはクラスのインスタンスを作成するためのものです。キーワードを関数名として使用することはできません。あなたのコードはすでにこれを強調表示されていませんか? – PeeHaa

答えて

10

newは、new Person('Joe')のような新しいオブジェクトを作成するための予約語です。 関数の名前を変更する必要があります。

参照のためにhttp://php.net/manual/en/reserved.keywords.phpを参照してください。

これらの単語は、PHPでは特別な意味を持ちます。それらのうちのいくつかは、関数のように見えるもの、定数のようなものなど、 を表しますが、 は実際にはそうではありません。それらは言語構造体です。定数、クラス名、関数またはメソッドとして以下の単語のうち を使用することはできません 名前。変数名として使用するのは一般的に問題ありませんが、 混乱の原因となります。

+1

http://www.php.net/manual/en/reserved.keywords.php –

2

new関数は、オブジェクトをインスタンス化するための予約済みキーワードであり、オーバーライド可能な関数ではありません。

関連する問題