PHP. ООП. Сухі приклади із книг, а застосовувати на проектах не виходить, як бути?

Скачай хороший фреймворк (рекомендую Symfony) і почни на ньому щось робити - хоча б просте - список todo для себе. Там у тебе не вийде писати процедурно - з часом на практиці так і зрозумієш для чого все це.

а так буває люди пишуть класами (static методами або singleton (ну добре singleton, ще більш менш)) і думають що це вже ОВП

і друге - писати шаблони для шаблонів - це відстій. шаблони треба використовувати для якихось цілей. зазвичай важливою передумовою їх використання є гнучкість проекту та використання модулів. ще один варинат якщо не хочеш з фреймворками і cms возиться - спробуй напиши свій універсальний модуль коотрий інші люди могли б використати.

можу надати приклад завдання. продовжуючи тему todo - напиши модуль який працював би зі списками туди і міг зберігати їх у різних сховищах - локальних файлах, БД, зберігати через апі на якийсь сервіс (тобто я сам можу написати хранилку).

тобто я завантажую твою бібліотеку і пишу такий код

$todoStore = new TodoStoreMysql('localhost', 'mysql', 'pass'); $todoStore->setTable('todo_list_table');

$list = New TodoList($todoStore); $ >add('нове завдання'); $list->getItems();

або я міг би захотіти зберігати список у файлах $todoStore = new TodoStoreJsonFile('todo.json'); $list = New TodoList($todoStore); $ >add('нове завдання'); $list->delete(4);

Спробуй розібратися у перевагах такого підходу. або напишу свою обгортку сховища TodoStoreEvernoute, наприклад. Спробуй зробити бібліотеку під такі вимоги.

Я зіткнувся з такою самою проблемою щодо ООП (який на даний момент все ще вивчаю). Поки читав книгу, мало уявляв, як застосовувати ці знання напрактиці. Але відповідь знайшлася.

На початку вивчення PHP, для практики я почав робити власний проект, який мені був цікавий, але, як виявилося в майбутньому, він не такий простий, як очікувалося. Почав природно у процедурному стилі, не знав нічого про поділ логіки та висновку, все було написано упереміш. Потім дізнався про поділ коду та розділив його. Але не просто розділив, а перед цим зіткнувся з проблемами, спричиненими нерозділеним кодом.

Так ось проект зростає, і набралася вже купа проблем на архітектурному рівні, які я не можу вирішити процедурним стилем. Почав бачити деякі проблеми та розуміти їх суть. І ось коли зрозумів суть проблеми, почали згадуватись шаблони та прийоми, про які я читав у книзі з ОВП. Почав стикатися з повторенням коду, тісними зв'язками (там, де їх бачив), і в цих місцях застосовував знання з книги для усунення виявлених проблем.

Моя порада: робіть свій складний проект, як вмієте, і в міру зростання проекту, неминуче почнуть виникати проблеми, які потребують підходу до ОПП. Ось тоді інформація з книг стане застосовною до практики. Ви вирішуватимете реальні проблеми у своєму проекті за допомогою знань, отриманих з книги. Причому це буде цікаво і принесе задоволення.

ЗИЖ: Також багато хто радить використовувати фреймворки. Поки що я вирішив цього не робити саме для того, щоб зрозуміти - як і для чого застосовувати ОВП. Я вважаю, що фреймворки це вже наступний крок, принаймні для такого самоучка як я. Можливо, для людини з відповідною базою це саме те, що потрібно.