考えると2つのクラスをスーパークラスAのprop1
?__sleep()とスーパークラスのプロパティ
EDIT:
(__sleepを定義していないが)protected
にそれらを設定せずにシリアライズされた文字列でprivate
プロパティが表示されます。彼らは�A�prop1
のように見えますが、私はwhatが何であるかを知ることができません。
考えると2つのクラスをスーパークラスAのprop1
?__sleep()とスーパークラスのプロパティ
EDIT:
(__sleepを定義していないが)protected
にそれらを設定せずにシリアライズされた文字列でprivate
プロパティが表示されます。彼らは�A�prop1
のように見えますが、私はwhatが何であるかを知ることができません。
明示的に親クラスの関数を呼び出して、結果を追加します。
class A
{
private $prop1;
public function __sleep()
{
return array('prop1');
}
}
class B extends A
{
private $prop2;
public function __sleep()
{
$arr = parent::__sleep();
array_push($arr, 'prop2');
return $arr;
}
}
プライベートプロパティは、子オブジェクトには表示されません。
protected $prop1;
manualから:あなたはそれにアクセスすることができますB
のでprotected
に$prop1
の可視性を変更する必要があります
プライベートとして宣言メンバーは唯一のメンバーを定義するクラスによってアクセスすることができます。
これらは継承されています。それらは派生コードには見えません。 –
@Tomalak Geret'kal:ありがとう。答えが更新されました。 –
:) upvoteを持っています。 –
賢い、ありがとう。 – Francisc
@Francisc子クラスの親クラスの戻り値を変更する必要があるときはいつでも、それを親クラスから取得します。 – cwallenpoole
うん、私を傷つける唯一の事は、__sleep()関数を定義しなければ、 ' A prop1'の形式で値を持つ結果の文字列にプライベートプロパティを取得するということでした。 __sleep()関数を定義した場合、これらのプロパティはNULLになります。 – Francisc