2011-07-05 11 views
0

私はクラス内にいます。オブジェクトメンバーを設定しようとしています:PHP空のオブジェクトメンバー

$this->list = "hello"; 
print $this->list; 

「hello」を返します。

ただし、empty($this->list))は常にtrueを返します。

しかし、非オブジェクトメンバの場合$tmp = "hello"empty($tmp) falseを返します。

なぜempty()をオブジェクトメンバーで使用できないのですか?

更新: 空()はmyコードフレームワークの影響を受けます。それが正しく動作しない理由です。

+1

あなたは実際にクラス内にいるか、 '$ this-> list = 'hello''を通してオブジェクトを作成しようとしていますか?エラーメッセージが表示されますか? – Kokos

+0

再現できません: '$ s = new stdClass; $ s-> list = 'Hello'; var_dump($ s);/* オブジェクト(stdClass)#1(1){ ["list"] => 文字列(5) "Hello" */ var_dump(空($ s->リスト)); /* bool(false)*/' – KingCrunch

+0

私はvar_dump($ this-> list)を使用しました。それは "string(5)hello"を返します。しかし、空($ this-> list)でもtrueを返します。 – chnet

答えて

2
<?php 

    class Foo 
    { 
    var $bar; 

    function Bar() 
    { 
     $this->bar = 'hello'; 
     echo "In class: " . (empty($this->bar) ? 'empty' : 'populated') . "\r\n"; 
    } 
    } 

    $foo = new Foo(); 
    $foo->Bar(); 

    echo "Out of class: " . (empty($foo->bar) ? 'empty' : 'populated'); 

は出力:クラスで

:クラスのうち
を人口:人口what you mean

わかりません。多分もっと多くのコードを提供するでしょうか?また、empty()手動当たり、以下の値が考慮されるべきである。

  • ""(空文字列)
  • 0(整数として0)
  • 0.0(0フロートとして文字列として) 9 "0"(0)
  • NULL
  • FALSE
  • アレイ()(空の配列)
  • var $ var; (変数は宣言されていますが、クラス内に値がありません)

また、オブジェクトにはvar_dumpを使用して、期待していることを確認してください。

+1

var_dump($ this-> list)を使用しました。空($ this-> list);これはstring(5)hello trueを返します。 – chnet

+0

@chnet:興味深いことに、それは他の何かを干渉させなければなりません。基本的なテスト(上記)だけで、オブジェクトメンバーに対するテストに問題はありません。 –

+0

@chnet:問題を発見したことはありますか? –