В настоящее время у меня довольно большое приложение, написанное полностью с процедурным PHP. Я хочу продолжить свой опыт работы с PHP и перекодировать большинство своих приложений с использованием объектно-ориентированных методов.Преобразование процедурного PHP в объектно-ориентированный PHP
Существует много областей, где ООП может помочь уменьшить количество кода и облегчить его чтение. Однако у меня есть несколько вопросов.
1) Насколько я понимаю, один класс используется в качестве плана для любого количества объектов, но любой класс представляет только один объект, не более одного. Таким образом, один класс может представлять игрока, но не много игроков.
2) Поскольку я довольно много различных классов для включения, я использую класс «Loader», чтобы загрузить их все с помощью spl_autoload_register
или я просто использовать spl_autoload_register
в программных файлах для моего приложения?
Edit: Так что мой автозагрузчик будет класс, который я затем создать экземпляр для запуска автозагрузку или просто PHP файл с функцией и spl_autoload_register, что я хотел бы включать в себя, чтобы избежать повторения того же кода в нескольких файлах ?
3) Некоторые из моих классов зависят от других классов. Я никогда не сталкивался с этим раньше, поэтому я честно не знаю ответа. Если я включу все классы в свой основной файл программы, но мой класс класса не включает класс, который должен функционировать, будет ли класс игрока работать, поскольку основная программа включает класс, от которого зависит игрок?
Edit: Так что даже если один класс может создать экземпляр объекта типа проигрывателя, а класс игрока не включены непосредственно этим классом, он все равно будет работать, потому что класс контроллера делает включают класс игрока?
4) Существует несколько случаев, когда мне нужно будет работать с объектами, которые я создаю. Мне интересно, как я должен это делать. Например, в моем классе Player мне иногда нужно будет отправлять что-то от одного игрока другому игроку. Итак, реализую ли я статический метод в классе Player, который принимает два игрока в качестве параметров и выполняет ли передача, или я делаю что-то еще?
Редактировать: Итак, избегайте статических методов. Теперь у меня есть серьезная проблема: у меня есть методы, которые выполняются несколько раз в моем приложении, но я не могу реализовать их как статические методы. Я должен реализовать их как методы экземпляра? Например, отправка от одного игрока к другому. Я бы создал метод экземпляра, который принимает объект Player, и отправляет либо , либо или от?
5) У меня есть много методов, которые действительно не принадлежат ни одному экземпляру класса, ни они действительно не подходят как статические методы. Должны ли они быть объявлены в их собственном классе как статические методы, такие как Common или аналогичные? Что делается на практике в этой ситуации?
Редактировать: Будут ли эти методы принадлежать определенному файлу приложения, для которого они используются или, возможно, хранятся в их собственном файле "functions.php"?
6) Я хотел бы узнать, как использовать пространства имен, но мой код никогда не будет использоваться другими, и я никогда не буду использовать чужой код в своем приложении. Являются ли пространства имен излишним дополнением в моем приложении или было бы хорошей идеей научиться их использовать? Независимо от того, имеет ли одно приложение одно пространство имен (имя приложения?) Или каждый класс принадлежит к собственному пространству имен?
7) Наконец, общепринято ли иметь один класс для соединений с базой данных, а также класс для сетевых методов? Моему приложению нужны оба. Я думаю, что основная проблема, с которой я сталкиваюсь в преобразовании своего кода в использование объектно-ориентированных методов, - это определение того, какие методы следует размещать там, где в настоящее время все они находятся в одном монолитном файле.
Спасибо за любую помощь и понимание, которые вы можете предоставить.
Спасибо за сообщение! Ваши # 1 и # 4 действительно помогли прояснить ситуацию! Коллекция игроков определенно имеет смысл для моего приложения и использование методов экземпляра для переноса предметов также имеет смысл. Я буду прислушиваться к советам всех и оставаться далеко от статических методов. –