2016-07-11 9 views
1

私はオンラインコースからPHPを学んでいます。私は保護されたクラスのメンバーを宣言しました。これらのメンバーは、クラスの外からアクセスできるはずではありませんが、私はそれらにアクセスできます。PHPの保護されたプライベートな可視性

これはこれは私がAddressクラスを使用するDemo.phpファイルであるクラス(class.Address.inc.php)

Class Address 
{ 
    //Street Address 
    protected $street_Address_1; 
    public $street_Address_2; 

    //Name of the city 
    public $city_name; 

    //Subdivision name 
    public $subdivision_name; 

    //Postal code 
    public $postal_code; 

    //country name 
    public $country_name; 

です。

<?php 

require 'class.Address.inc'; 

    $address=new Address; 
    $address->street_Address_1= "555 Fake Street";//protected but accessible 
    $address->street_Address_2="Hello"; 
    $address->city_name="Townsville"; 

保護されたメンバーにアクセスして、Demo.phpから初期化できます。保護されたメンバーは宣言されたクラス外で利用できないはずですか?

+3

私のためには動作しません:https://ideone.com/03ZhNl – tkausl

+0

キャッチしないエラーが発生するはずです。あなたのPHPのバージョンは何ですか? –

+0

私はどちらもhttp://sandbox.onlinephpfunctions.com/code/855f49cd25521625b711f9536541698b1865626e –

答えて

0

わからないが、クラス外で保護されたVARSにアクセスする方法を....再び

<?php 

require 'class.Address.inc'; //require 'class.Address.inc.php'; 
$address=new Address; 
$address->street_Address_1= "555 Fake Street";//protected but accessible 
$address->street_Address_2="Hello"; 
$address->city_name="Townsville"; 
+0

確かにそれが実際のエラーだった場合、 'Fatal error:Class 'Address' not found'のようなエラーが発生します。 – RiggsFolly

+0

私はこの答えを理解できません。なぜあなたは 'require 'class.Address.inc';' bold?を作成しましたか?質問はすでにその部分を使用しています。私は 'require 'class.Address.inc.php';をコメントとして入力するのを見ます。あなたは '.php'を最後に追加することを提案していますか?あなたはそれを元に戻しました。 – Ultimater

+0

申し訳ありませんが、私のせいでした。私は、.incファイルがインクルードされるファイルの拡張子であることを知りませんでした。私がファイルclass.Address.inc.phpに名前をつけたことを理解することを確認したら。私が気づいていなかったのは、すべてのメンバーが公開されているclass.Address.incファイルも作成したことでした。 class.Address.inc.phpファイルのメンバをprotectedに変更しました。コードはclass.Address.inc.phpではなくclass.Address.incファイルにアクセスしていました。 .http://stackoverflow.com/questions/7129842/what-is-inc-and-why-to-use-it – manufg

0

を少しテストを取るしようと、ここにあなたが設定値のために行うことができ、その値が同じで得ることができます。

<?php 
class myclass{ 
    protected $myname; 
    public function __construct(){ 
     $this->myname = "myclass class"; 
    } 
} 

class childclass extends myclass{ 

    public function __construct(){ 
     parent::__construct(); 
    } 

    public function getMyName(){ 
     return $this->myname; 
    } 
} 

$obj = new childclass(); 
echo $obj->getMyName(); 
関連する問題