2016-03-24 6 views
0

おそらく簡単な質問は申し訳ありませんが、Web上で何か問題が見つかっています。私はこのように見て、この記事の目的のための2つのクラス、のユーザーとアドレスそれらを呼びましょうを持っている:別のクラスのパラメータとしてのPHPクラス

class user { 
    public $firstName; 
    public $lastName; 
    public $address; 
} 

class address{ 
    public $streetAddress; 
    public $streetName; 
    public $city; 
    public $state; 
    public $zip; 
} 

この場合、私はタイプであることをユーザークラスに$アドレスパラメータをしたい「アドレス」第2のクラスによって定義される。 PHPでこれを行うことはできますか?私の最終目標は、次のようなプロパティを使用できるようにすることです。

$userZip = $user->address->zip; 

私は正しい道に迷っていますか?

+1

あなたはそれを試してみましたか?プロパティは任意のタイプのものでよい。答えは「はい」ですので、このようなプロパティにアクセスできます。コンストラクタで値を設定するだけで済みます。 –

+0

例:http://codepad.org/woJEXbHm編集:読みやすいようにインデントをスペースに変更しました。 –

+0

クラスプロパティの[タイプヒント](http://php.net/manual/de/language.oop5.typehinting.php)はまだ実装されていません(PHP 7.0.4以降)。したがって、私はあなたが_pinning_に関するプロパティの種類について行うことができる最高のものは、次の通りだと考えています:http://stackoverflow.com/questions/18956588/type-hinting-in-class-variables ... _that_があなたの実際の質問です。 – VolkerK

答えて

0

このようにしてください。

<?php 
class user { 
    public $firstName='bulent'; 
    public $lastName ='kocaman'; 
    public $address; 
    public function __construct() 
    { 
     $this->address = new address(); 
    } 
} 

class address{ 
    public $streetAddress=1; 
    public $streetName=2; 
    public $city=3; 
    public $state=4; 
    public $zip=5; 
} 

$user = new user(); 
print_r($user->address->zip); 
?> 

または

<?php 
class user extends address{ 
    public $firstName='bulent'; 
    public $lastName ='kocaman'; 
} 

class address{ 
    public $streetAddress=1; 
    public $streetName=2; 
    public $city=3; 
    public $state=4; 
    public $zip=5; 
} 

$user = new user(); 
print_r($user->zip); 
?> 
+0

それだけです!どうもありがとうございました! – GED125

+0

いいえいいえいいえいいえいいえ! – vascowhite

+0

@vascowhiteなぜ「いいえ」ですか?どうか説明できますか? –

0

私はこれがあなたが探していると信じています。

PHPでは、変数型は、割り当てられたデータによって定義されます。クラス1の$ addressを$ address(クラス2)型にしたいのであれば、それを$ addressのインスタンスに代入すれば、その型になります。

$user->address->zip 

要するに、はい、あなたは正しい軌道に乗っています。クラスにコンストラクタを追加する方法を調べてください。

+0

私は、オブジェクトのインスタンス化の方法を尋ねているとは思っていませんが、オブジェクトのプロパティが別のオブジェクトへの参照になるかどうかは問いません。 –

+0

これは新しいアドレスを作成しますが、ファーストクラスのパラメータが$ address型であることをどのように確立しますか? – GED125

+0

それは正しいです。ジョナサン、ありがとう。 – GED125