2012-02-17 4 views
1

私は、クエリー結果を表すためにphpクラスをコーディングしました。入力クエリでは、配列にキャストし、JSON(JSON_ENCODE)に変換してユーザーに返します。PHPは配列へのキャスト時に属性を隠す

ここでクラスのインターン "デバッグ"属性を定義したいと思います。これは出力にはありません。クラスをクラスにキャストして属性を非表示にするにはどうすればいいですか?

答えて

1

privateまたはprotectedを宣言してください。

class Foo 
{ 
    public $bar = 'bar'; 
    private $baz = 'baz'; 
    protected $quux = 'quux'; 
} 

$f = new Foo(); 

echo json_encode($f); 

結果:

{"bar":"bar"} 

NB。 PHP 5が必要です(PHPマニュアルのVisibilityを参照)。

+0

私は前に試しました - "\ u0000 * \ u0000debug"のようなものを返します:false – NaN

+0

@NaN:ご覧のとおり、私はそれをテストしました。しかし、私の言葉を取ってはいけません:http://codepad.org/mSCdaBjT –

+0

さて、私はエラーが見つかりました - 私は配列に鋳造... json_encode((array)$ f);動作しません...奇妙なしかし真実! – NaN

2

結果の配列の要素をunsetで削除します。

+0

これはいくつかの属性でかなりうまく機能しますが、明示的な関数呼び出しを必要とせずに、「属性を非公開として宣言しています。 – NaN

関連する問題