2017-05-15 14 views
-3

私が忘却に陥る前に、私は経験豊富なフロントエンドの開発者で、PHPを学んでより優れたプログラマを作ろうとしています。なぜ次のコードが自分のプライベート変数をまだ出力しているのか理解する助けが必要です。私は、継承されたクラスを介してアクセスしようとするとエラーがスローされると考えました。プライベート変数が期待どおりに機能していませんか?

<?php 
class Kopi 
{ 
private $name = 'Kopi'; 

    function __construct() 
    { 
     $this->getName();  
    } 
    function getName() 
    { 
     echo $this->name; 
    } 
} 

class Dog extends Kopi 
{ 
     function __construct() 
     { 
      Parent::getName(); 
     } 
} 

$kopi = new Dog; 
+0

'Parent :: getName(); 'これは基本クラス(その親、この場合は' Kopi')を呼び出すことを意味していないので、 '$ name'は' Kopi' **からアクセス可能ですので**まだ有効です。 –

+0

http://php.net/manual/en/language.oop5.basic.phpを開いてから、まだ展開していない場合は**「拡張」**の下に表示されます。 –

+0

私はあなたがバグレポートを提出しないことを望みます:-) "extends"はクラスを複製するだけです。 – DLastCodeBender

答えて

0

あなたのプロパティ$nameはプライベートです。あなたが使っている方法はそうではありません。

$nameに直接アクセスすることはできませんが、ゲッターメソッドで完全に値を取得できます。

http://php.net/manual/en/language.oop5.visibility.php

+0

建設的でありがとう! –

関連する問題