2011-11-11 6 views
0
function CharField($len) 
{ 
    return "VARCHAR($len)"; 
} 


class ArticleModel extends Model 
{ 
    public $name = CharField(100); // Error Here 
} 

公共properyを割り当てる際、それはエラーがスローされます。エラーが

PHP Parse error: syntax error, unexpected '(', expecting ',' or ';' in /var/www/test/db.php

理由は何をすることができますか?

+0

達成しようとしていることは何ですか? $ nameプロパティに文字列リテラル "VARCHAR(100)"が含まれていますか?または、$ nameプロパティを最大100文字の文字列値にしますか? – liquorvicar

+0

実際、私はORMの非常に表面的な実装を書こうとしています。 このクラスはサブクラス化でき、サブクラスはカラム名としてプロパティを持つテーブルに変換されます。 後でオブジェクトでアクセスすると、プロパティに値を代入するだけでテーブルを更新することができます... Djangoと同じように... とにかく、別の方法を見つける必要があります。あなたがいくつかの助けになることができたら私は望む... ありがとう!!! –

答えて

1

はあなたが唯一の定数を持つプロパティを初期化することができ、あなたのコンストラクタで

2

を値を初期化します。

http://www.php.net/manual/en/language.oop5.properties.php

[Properties] are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

だから、確かに、あなたのコンストラクタでそれらを初期化します。

+0

おかげで...私は他の方法を見つける必要があると思う:... –

0

manualによれば、クラスプロパティをインスタンス化するときにのみ定数値を割り当てることができます。