所以可以说我有一个由其他类组成的类。
class HttpRequest
{
public $session = new Session();
// .. the rest of the HttpRequest code
}
现在,我想通过 HttpRequest 类访问 Session 类,所以我使用组合。但这是否违反了 OOP 封装或数据隐藏的规定,即所有属性都应该受到保护,并通过 setter 和 getter 方法访问?
这是错的吗:
$request = new HttpRequest();
$request->session->set('id', 5);
或者我应该使用这个:
$request = new HttpRequest();
$session = $request->getSession();
$session->set('id', 5);
封装状态应该保护属性。那么如何提供对内部类的访问呢?就正确的 OOP 而言,第一个示例是否错误?