それで、他のクラスで構成されているクラスがあるとしましょう。
class HttpRequest
{
public $session = new Session();
// .. the rest of the HttpRequest code
}
ここで、HttpRequestクラスを介してSessionクラスにアクセスしたいので、compositionを使用します。しかし、これは、すべてのプロパティを保護し、setterメソッドとgetterメソッドを介してアクセスする必要があるというOOPカプセル化またはデータ隠蔽の法則に違反しますか?
これは間違っていますか:
$request = new HttpRequest();
$request->session->set('id', 5);
または私はこれを使用する必要があります:
$request = new HttpRequest();
$session = $request->getSession();
$session->set('id', 5);
カプセル化は、プロパティを保護する必要があることを示しています。では、内部クラスへのアクセスを提供するにはどうすればよいですか?適切なOOPに関する限り、最初の例は間違っていますか?