Все в этой теме дают правильные ответы, но никто не дал полный пример кода, поэтому я опубликую свое предложение:
class Course
{
/**
* @var int
*/
protected $_courseId;
/**
* @var array
*/
protected $_course;
/**
* Class constructor
*
* @param int $courseId Course ID
* @return Course
*/
public function __construct($courseId)
{
$this->_courseId = (int) $courseId;
}
/**
* Get course information
*
* @param bool $all ...
* @return array
*/
public function getCourseInfo($all = false)
{
if ($this->_course === null) {
// use $this->_courseId as needed
$this->_course = ... // populate course info
}
return $this->_course;
}
}
Как вы заметите, я пропустил параметр идентификатора курса изgetCourseInfo () просто потому, что он не нужен, если вы создаете экземпляр класса с идентификатором курса.
Во-вторых, я не думаю, что вам следует вызывать getCourseInfo в конструкторе, потому что информация понадобится только позже.Кроме того, я добавил кеширование в функцию, чтобы вы не получали данные дважды.
Очевидно, что есть большая вероятность, что я могу ошибаться, не увидев ваш код, но я считаю, что это лучшая структуракод.