2012-01-11 16 views
0

PHPクラスで変数とメソッドを作りたいと思います。私はOOPではなく常に使用するので、二重引用符を使用したい。しかし、それは動作しません、それはエラーを示しています。どうして?PHPクラスのクォートどのようにそれらを使用するには?

class myClass { 
    public $url = "http://www.somesite.com?index=$number";  // this var has url as a value 

    public $html = "<div>          // this var is an HTML code with $url var in href 
         <a href='$url'>Link</a> 
        </div>"; 

    public function echoHTML() {        // and this is method to echo html code 
      echo $this->html; 
    } 
} 

$obj = new myClass(); 
$obj->echoHTML(); 

問題点は以下のとおりです:私はそれがうまく

を働く単一引用符のための二重引用符を変更すると、二重引用符がここ

public $url = "http://www.somesite.com?index=$number"; 

を使用している場合

1)それがエラーを示してここに私のコードです

public $url = 'http://www.somesite.com?index=$number'; 

なぜですか?私はOPPコーディングではなく、常に二重引用符を使用していましたが、私の習慣を変えたくありません。 PHPのOOPでは一重引用符が必要なのですか?

また、第2変数$ htmlと同じ状況です。これは、一重引用符の外側二重引用符を変更します。そして内側の単一のqoutが2倍になります。このように:

public $html = '<div>          
        <a href="$url">Link</a> 
       </div>'; 

[OK]を変更しますが、ここでは問題2と表示されます。

2)hrefに変数の値が表示されません。ページが読み込まれると、がURLにありますが、私は期待通りにはhttp://www.somesite.com?index=$numberではありません。変数の値を使用する方法を教えてください。

+1

OOPへのアプローチには、基本的にクラス内にスクリプトを書き込もうとすると、多くの問題があります(これはOOPの仕組みではありません)。私はOOPチュートリアル/例についてはPHP.netに相談することをお勧めします。 –

答えて

1

単一引用符と二重引用符の使用は、OOPやクラスとは関係ありません。

二重引用符はPHPに内容を評価するように指示するので、echo "text $var text";のようなことができます。一重引用符を使用すると、内容が評価されないので、これは機能しません。

通常、文字列を連結すると二重引用符よりもパフォーマンスが向上するため、通常はテキストと変数を結合するときに一重引用符を使用することをお勧めします。これを考慮してください:

public $url = 'http://www.somesite.com?index=' . $number; 
public $html = '<div><a href=\"' . $url . '\">Link</a></div>'; 

アンカータグの二重引用符をエスケープする必要があることに注意してください。属性値に二重引用符を使用することも慣習です。

+0

ありがとう!もちろん、連結。 – Green

+0

ようこそ。 – VettelS

0

私が知っている限り、あなたはPHPで引用符で問題を起こしてはいけません。

あなたは何か問題があるかもしれませんが(わかりませんが、そう思われます)、未定義の変数です。

私が見る限り、$numberはあなたが定義した変数ではありません。$varも変数ではありません。これは問題となる可能性があります。二重引用符の代わりに一重引用符に切り替えると、文字列 "$ number"と文字列 "$ var"が含まれます。二重引用符を取得している場合は、それが見つからないと仮定して変数を探しています。

これが役に立ちます。

更新日 - あなたの質問を読み返してください。 2番目の質問は、クラス変数として定義したではなく、変数$varを使用しているためです。第二に、私はあなたがしたように他のクラス変数でクラス変数を使うことができるとは分かりません(私は間違っている可能性があります)。

+0

はい、申し訳ありません。私の間違いがある。 $ varではなく、hrefに$ urlがあります。私はすでにそれを修正しました。 – Green

1

申し訳ありませんが、あなたはできません。単純な式の場合にのみ機能します。 hereを参照してください。 一重引用符を使用すると直接評価されませんエコー内容。二重引用符を使用すると評価されます。簡易!

関連する問題