В ООП иногда вы видите что-то похожее на это:
$memberID = $system->members->memberID();
Я был удивлен и совершенно сбит с толку с той стороны, где это ->members->...
Как это работает?
Например, допустим, у меня есть класс, который я вызываю и который называется $systems
, тогда как я могу поставить ->members->
после него для запуска класса members?
Я только знаю, как сделать что-то вроде этого:
$system = new system();
$memberID = $system->memberID();
Но я хотел бы знать, как это сделать:
$system = new system();
$memberID = $system->members->memberID();
Спасибо!
- ОБНОВЛЕНИЕ - Вот небольшое обновление, спасибо всем, кто помог мне так далеко!Вы, ребята, действительно указали мне правильное направление, у меня действительно есть отличный ответ на мой собственный вопрос!:) И благодаря модератору, который редактировал этот вопрос, мне жаль, что я не был знаком с синтаксисом bbcode.
Я хотел, чтобы что-то автоматически создавало новые классы, например, вызывая -> members->будет автоматически включен с помощью __get (), а не вручную вставлять что-то вроде «новые члены ()».Немного сложно объяснить, но я надеюсь, что вы поняли основы.
В любом случае, вот код, который я использую:
<? class system {
public function __get($name){
$file = 'lib/'.$name;
if(file_exists($file)){
require_once($file);
$classname = $name;
$this->$name = new $classname($this);
return $this->$name;
}else{
die('Class '.$name.' could not be loaded (tried to load class-file '.$file.')');
}
}
}?>
Теперь, если бы я что-то сделал, строчки этого:
$system = new system();
$system->members->functionHere();
Это автоматически создаст новый экземпляр класса members и потребует файл из папки lib.
Если это противоречит правилам, то я прошу прощения.Я просто хотел опубликовать это для всех, кто сталкивался с этим вопросом при поиске в Google, потому что я знаю, что всегда попадаю сюда, когда что-то гуглю!