Не оба.
class Class {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function data() {
return $this->data;
}
}
Код для получения data живет за пределами класса. Чтобы понять, почему так, переименуйте Class например в Auto, а data например в color. В общем, суть в том, что у объекта должно быть состояние (свойства объекта) и может быть поведение (методы объекта), которые это состояние меняют. Это должно быть очевидно. Иногда бывают исключения. Очень редко. Почти всегда, можно сделать тру ООП.
Сейчас у вас, к сожалению, процедурный код, обернутый в номенклатуру ООП :(