Меня немного смущает ситуация, показанная в этом коде ...
class DirEnt
{
public function PopulateDirectory($path)
{
/*... code ...*/
while ($file = readdir($folder))
{
is_dir($file) ? $dtype = DType::Folder : $dtype = Dtype::File;
$this->push_back(new SomeClass($file, $dtype));
}
/*... code ...*/
}
//Element inserter.
public function push_back($element)
{
//Insert the element.
}
}
Зачем мне нужно используйте $ this-> push_back (new SomeClass ($ file, $ dtype))
или self :: push_back (new SomeClass ($ file, $ dtype))
для вызова члена функция push_back
? Кажется, я не могу получить к нему доступ, просто выполнив push_back (new SomeClass ($ file, $ dtype))
, как я ожидал. Я прочитал Когда использовать self вместо $ this? , но он не дал ответа, зачем мне вообще нужен один из них (или, если да, то, может быть, я что-то еще испортил).
Почему требуется эта спецификация, если члены нестатичны и принадлежат к одному классу? Разве все функции-члены не должны быть видимыми и известными из других функций-членов в том же классе?
PS: Он отлично работает с $ this ->
и self ::
, но говорит функции неизвестны, если ни одна из них не присутствует в вызове push_back
.