Хотя я знаю, что на этот вопрос уже дан ответ, я чувствую, что могу добавить сюда ценность.
Я не считаю, что вы должны использовать PHP как язык программирования для изучения ООП. Если вы хотите изучать ООП для веб-приложений, вам стоит обратить внимание на C # или Java. Как только вы изучите ООП, вы можете применить эти знания в PHP. Один пример книги, которую я использовал для изучения ООП, был Big Java by Cay S. Horstmann
Почему я так говорю ??? Поскольку на PHP есть буквально миллионы примеров того, как делать что-то, однако не так много примеров того, как правильно программировать. В дополнение к этому, PHP позволяет использовать множество ярлыков, что неприемлемо для подобных Java. Таким образом, если вы программируете PHP с головой Java, то я считаю, что вы будете более сильным программистом. ООП не зависит от языка, это парадигма программирования.
Если вам необходимо изучить ООП с использованием PHP, то я бы порекомендовал вам взглянуть на реальный исходный код в общедоступных репозиториях github. Вы можете искать их в packagist.org. Если они являются приличным публичным репозиторием, они будут содержать файл readme.md, который покажет вам, как использовать пакеты composer. Например, https://github.com/moltin/laravel-cart - это пример пакета корзины покупок, который вы сможете использовать в своем приложении. Обратите внимание, что вам не нужно смотреть на исходный код пакета, чтобы понять, что делают пакеты. Пакет был написан, и вы не заботитесь о том, как они работают, но вы используете их, поэтому вам нужно только знать, как их использовать. Это именно то, о чем ООП.
Мне все равно, как класс корзины покупок добавляет товар в корзину, я просто хочу создать новую корзину и добавить в нее что-то.
Однако вы погружаетесь в исходный код как инструмент, чтобы понять, как работает ООП.
В дополнение к этому, и, возможно, что еще более важно, для разработки веб-приложений, я бы исследовал шаблон проектирования MVC.
Шаблон проектирования MVC обозначает Модель, Вид, Контроллер. Если в случае веб-приложения Модель отвечает за моделирование базы данных, то представление отвечает за отображение контента для пользователя. Контроллер отвечает за взаимодействие с моделью и обработку пользовательского ввода.
Тогда я думаю, что вы должны попытаться установить Laravel Framework или другой "достойный современный фреймворк" на свой локальный компьютер. Почему я говорю современный, потому что современные фреймворки требуют минимальной версии PHP 5.3+, что означает, что PHP на вашем компьютере будет поддерживать настоящий ООП, аналогичный тому, который вы получили бы от подобных Java.
Существует множество учебных пособий, которые покажут вам, как создавать веб-приложения в laravel. Сразу же вы увидите, что при создании контроллера вы расширяете BaseController. Когда вы создаете модель, вы расширяете Eloquent. Это означает, что вы уже будете использовать полиморфизм в вашем коде. Вы увидите, что при использовании классов они инкапсулируются, и вы увидите, что у каждого класса есть определенная роль.
Когда вы хотите взаимодействовать с базой данных, вы сначала создадите объект new Model
в методах контроллера. По мере того, как вы начнете узнавать больше, вы начнете учиться внедрять зависимости в контроллер, а затем научитесь создавать дампы ваших моделей и создавать репозитории и программировать для интерфейсов.
Приличная книга по изучению Laravel для начинающих будет https://leanpub.com/codebright Дейла Риса. Я встретил Дейла на встрече Laravel около 2 недель назад.
В дополнение к этому, когда вы станете более опытным в создании веб-приложений, вы начнете узнавать, как применять следующие принципы в вашем программировании:
- Принцип единой ответственности
- Открытый Закрытый Принцип
- Принцип замещения Лискова
- Принцип сегрегации интерфейса
- Принцип обращения зависимостей