Пользовательские PHP Framework Обратная связь - PullRequest
3 голосов
/ 22 мая 2010

Я изучаю программирование ООП уже около полутора лет и разработал довольно стандартную структуру, которой я обычно придерживаюсь. Я хотел бы получить отзывы или комментарии о том, как я могу улучшить некоторые функции или есть некоторые вещи, которые я пропускаю.

РЕЖИМ ПРОСМОТРА

1) По сути, все начинается со страницы Index.php. Первое, что я делаю, - это требую мой файл "packages.php", который по сути является файлом конфигурации, который импортирует все классы и списки функций, которые я буду использовать.

2) У меня нет прямой связи между моим файлом index.php и моими классами, я сделал «красивую работу над ними» с моим файлом viewfunctions.php, который по сути является просто проводником к классам, так что в моем html Я могу написать <?php get_title('page'); ?> вместо <?php echo $pageClass->get_title('page'); ?> Кроме того, я могу запустить пару небольших логических выражений и что не в скрипте функции представления, которые могут лучше адаптировать вывод класса.

3) Любая информация, поступающая через базу данных, запускается из соответствующего класса, который напрямую связан с классом базы данных, единственного класса, которому разрешено напрямую связываться с базой данных (разрешено в том смысле, что я запускаю все свои запросы с пользовательским кодом класса).

РЕЖИМ ВВОДА

1) Любой пользовательский ввод отправляется на мой userFunctions.php.

2) Затем создается мой класс безопасности, куда я отправляю любые введенные пользователем данные для проверки и подтверждения.

3) Если входные данные проходят мою проверку безопасности, я передаю их в свой класс БД для ввода в мою базу данных.

php общая модель http://img139.imageshack.us/img139/3319/phpmodel.gif

Feedback

Мне интересно, есть ли какие-либо явно очевидные подводные камни в общей структуре или способы, которыми я могу улучшить это.

Заранее спасибо за ваш вклад. Я знаю, что на самом деле нет «правильного» ответа на это, но я полагаю, что парой голосов было бы для того, чтобы получить какой-то сильный совет относительно построения каркасов.

-J

Ответы [ 4 ]

3 голосов
/ 22 мая 2010

Одна вещь, которую я бы порекомендовал вам сделать, это пойти дальше и разделить ваши функции на классы.Я понимаю высказанные вами замечания об избежании создания экземпляров, но учтите следующее: любая инфраструктура по необходимости начнет накапливать большое количество функций.

Вместо выполнения

<?php get_title('page'); ?>

вам будет лучше создать класс Page со всеми его функциями внутри указанного класса, который вы вызываете статически.Тогда ваш код станет

<?php Page::GetTitle('page'); ?>

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

Я бы изучил методологию проектирования Model-View-Controller (как намекал ircmaxell в своей статье).Многие очень мощные и очень хорошо написанные фреймворки применяют этот принцип, и не только фреймворки PHP.Мое предложение - изучите Yii , как управлять вашим приложением - очень удобно, и создатель отлично использует статические переменные для управления созданием классов.

Удачи в вашей среде!

2 голосов
/ 22 мая 2010

Хорошая презентация. Я бы определенно заглянул в другие популярные фреймворки для некоторого понимания.

На первый взгляд, я бы посоветовал посмотреть, сможете ли вы найти способ загружать только те классы, которые вам нужны для каждого запроса. Загрузка их всех для каждого запроса может стать невозможной, если библиотека классов станет больше.

2 голосов
/ 22 мая 2010

Ну, единственная проблема, которую я вижу (без кода), это то, что SQL будет везде. Я бы предложил создать слой «модель» перед классом соединения с БД. Таким образом, все ваши sql находятся в одном месте (разбить его на несколько моделей и т. Д.). Это намного упрощает обслуживание (если вы хотите добавить столбец в таблицу, оптимизировать запрос и т. Д.) ...

В остальном это выглядит как хорошее начало!

1 голос
/ 23 июня 2012

Вы используете автозагрузчики? Кажется, вы будете использовать много требований ... может быть, я просто неправильно понимаю. Я думаю, это здорово, что ты пишешь свой собственный фреймворк. Я не рассматриваю это как «заново изобретать колесо», так как вы пишете его для выполнения задач, которые вы хотите выполнить, и можете контролировать общий вес вашего проекта, а также, поскольку вы по большинству стандартов все еще относительно плохо знакомы с OOP Изучая тонну я уверен из опыта. Создание собственных фреймворков, попытка улучшить код других людей и изучение того, как другие делают вещи, и почему это удивительный опыт обучения, и, на мой взгляд, кардинально улучшит ваши навыки программирования и понимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...