Как разобраться в ООП PHP библиотеке?

Имеем https://github.com/danog/MadelineProto
куча файлов разбитых по подпапочкам. С чего начать разбирательство? В каком файле что хранится и как это организовано?

Я знаю что ООП это создание классов, использование объектов и т.д. Сам пишу в классе, но это скорее сборник логических методов с удобными свойствами и __construct - что вероятно не является тру-ООП. Понимание как сделать наследование пока не помогает использовать такое. :(

Как сразу понимают каким образом использовать чужой код? Какой алгоритм вы применяете? Вопросы не для красивого словца - реальное огромное желание разобраться. Не проходите мимо пожалуйста.

ps1
В случае с простыми функциями где пишут что на входе и выходе - всё понятно. Неужели поддерживать документацию ОПП проще, чем документацию конкретными функциями? Если бы в будущем был сервис вроде github но для функций и они ставились в php так же просто как установка пакетов apt install функция1 функция2 ..; было бы просто шикардос. Не?

ps2
Автор библиотеки специально пропустил несколько файлов, которые пользователь должен создать сам, типа не для дурачков. Это сознательный здравый современный подход или автор просто хамит? https://github.com/danog/MadelineProto/issues/33#i...

ps3
Тоже ООП библиотека от facebook https://facebook.github.io/php-webdriver/latest/in... считается отлично документированной, прям увидел, 5 сек и код готов? Или как?
Мне для своих задач понятно как ее использовать, просто интересует венец ли это описательной подробности в мире ООП или может быть лучше?
  • Вопрос задан
  • 1151 просмотр
Пригласить эксперта
Ответы на вопрос 3
@egormmm
Борітеся — поборете!
Чувак. Любой код (библиотека, пакет, функция) - есть некое обещание его производителя выполнить что-то ценное для тебя. Это описание должно давать название класса и его метода, который этот результат создаст. А дальше - это уже не твои проблемы как там внутри все устроено. Ты создаёшь объект, даёшь ему то, от чего он зависит, и вызываешь у этого объекта метод. Все!

Представь телевизор. Его производитель обещает дать тебе возможность смотреть телеканалы, если ты подключишь антенну. Какая твоя задача как пользователя телевизора? Правильно! Вставить антенну и нажать на кнопку включения. Ты ведь не будешь залазить внутрь телевизора с тестером, и проверять как же там все устроено. Описание должно тебе сказать где кнопка включения.

Если ты используешь пакет (модуль, библиотеку), в которой это непонятно сразу - то это не твоя проблема, а того производителя которые его создал. Просто лучше, вероятно, ничего не придумали, и приходится либо создавать самому, либо пользоваться таким Г...

Код должен быть примерно такой:
$tv = new Tv(new Antena);
$content = $tv->on();

Это и есть ООП.
Ответ написан
@D3lphi
С чего начать разбирательство? В каком файле что хранится и как это организовано?

Если вы хотите понять, как работает это библиотека, что за чем вызывается и тд, то я очень рекомендую использовать вам отладчик (Самый популярный - это xdebug) с какой нибудь удобной gui'шкой (Оная присутствует в phpstorm). Ставите breakpoint и вперед разбираться с порядком вызова того или иного метода, функции и тд.

Как сразу понимают каким образом использовать чужой код?

Читаем документацию по этой библиотеке.

Неужели поддерживать документацию ОПП проще, чем документацию конкретными функциями?

В первую очередь важна не поддержка документации, а поддержка кода. И удобство его использования.

Если бы в будущем был сервис вроде github но для функций и они ставились в php так же просто как установка пакетов apt install функция1 функция2 ..; было бы просто шикардос. Не?

Вы считаете, что устанавливать библиотеки в php непросто?

Автор библиотеки специально пропустил несколько файлов, которые пользователь должен создать сам, типа не для дурачков.

Он не пропускал никаких файлов. В комментарии по ссылке он предлагает создать программисту клиентского кода файл с конфигурацией на его усмотрение. Файл конфигурации не имеет никакого отношения к реализации. Программист клиентского кода волен сам решать, как конфигурировать объекты:
// Так
$someObf = new SomeClass('this_is_example_api_key');

// Или так
$someObf = new SomeClass(require('config.php')['api_key']);

// Или, например, так
$someObf = new SomeClass($config->get('api_key'));
Ответ написан
zorca
@zorca
Читаю документацию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 10:00
10000 руб./за проект
29 мар. 2024, в 09:59
750 руб./в час
29 мар. 2024, в 09:55
50000 руб./за проект