PHP-классы и организация кода

62
3

Ну, я в настоящее время работаю над переработкой бэкэнда PHP (sorta, создающим собственную CMS) на личном веб-сайте для удовольствия, а также используя его как возможность обучения.

Я пытаюсь изучить методы ООП в PHP, поскольку классы кажутся отличным способом сохранить код более организованным и свести к минимуму повторное использование кода. (Хотя повторное использование кода не обязательно более распространено в не-oop-системах, если оно правильно спроектировано)

Мой вопрос касается того, как я должен заниматься организацией разных классов:

Я организовал свой проект на листе бумаги в форме, подобной этому:

<!-- language: lang-php -->

<?php
class main_website{
#Has a bunch of universal configuration such as a connection to the database
function __construct($includes='webpage1.class.php'){
#will include anything listed above
}
}
class users extends main_website{
#functions relating to users
}
class webpages extends main_website{
#functions relating to all web-pages
}
class webpage1 extends webpages{
#has a set of functions that relate specifically to webpage 1 and won't be used elsewhere
}
class webpage2 extends webpages{
#has a set of functions that relate specifically to webpage 2 and won't be used elsewhere
}
?>

Теперь это хорошо работает... иш. Но я добираюсь до точки, где я создаю несколько классов, которые в какой-то момент должны будут общаться друг с другом; в настоящее время мое решение состоит в том, чтобы заставить их общаться через их родительский класс, однако наличие "родственных" классов, разговаривающих друг с другом, кажется взломанным, поэтому я хотел бы спросить, правильно ли я понимаю ООП или нет.

Многие должности в ООП настолько разнообразны, и у многих людей есть такие широкие взгляды на дизайн кода, и я не уверен, какие способы "правильные". (по крайней мере... прямо с точки зрения того, что мой проект будет несколько "стандартным")

спросил(а) 2015-10-23T06:50:00+03:00 4 года, 1 месяц назад
1
Решение
55

Вы должны использовать контейнер для инъекций зависимых, например компонент Symfony Dependency Injection (который можно использовать автономно, как описано в статье) для обработки этого сообщения.

Это сделает загрузку классов более эффективной (используя ленивую инстанцирование), а также сделает ваши классы более легкими для модульного тестирования изолированно.

ответил(а) 2015-10-23T07:22:00+03:00 4 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема