2010-11-27 2 views
1

Надеюсь, вы мне поможете! =)От процедуры до OO PHP. Live Пример

Поскольку я работаю с PHP, я всегда кодирую процедуру. Зачем? Ответ прост. Я не знаю, как работать с объектами и т. Д. Но я хочу! Действительно ... =) Я ищу в сети и нашел этот урок - Object Oriented Programming with PHP. Поэтому я прочитал его, выучил синтаксис. Немного экспериментируйте с данным кодом. И я считаю это наученным! xD

Позвольте мне объяснить проблему. Например, я хочу создать систему пользователей. Раньше это было легко сделать. Я просто создаю один файл в виде HTML-формы. Пользователь вводит имя пользователя и пароль. Он отправляет в другой файл, где я проверяю его. Если все в порядке, PHP записывает новую запись в базу данных. В противном случае создается ошибка. То же самое со входом, только для переменной entry-session, созданной с идентификатором пользователя. И как проверить, является ли пользователь вход? Просто проверьте переменную сеанса. Нет проблем. И проблема приходит ... С объектами? Как мне это сделать? Что такое объект (пользователь, некоторая проверка?)? Где объекты? И так далее с тупыми, даже новичку вопросы ... = (

Может все создать маленький пример для меня? На самом деле для новичка в этом. Я очень хочу узнать. Спасибо. =)

P.S. Извините за мой английский, это не мой родной язык. = P

ответ

3

Это очень широкий вопрос. Youre просит нас дать вам скелетную реализацию ядра целого приложения! :-)

Большая часть этого также зависит от того, как вы хотите использовать архитектуру своего приложения. Вы должны создавать все эти классы или использовать их с помощью open source, они не встроены в PHP. Вот почему большинство людей используют фреймворк, который обеспечивает большую часть этого базового материала.

Однако я бы не рекомендовал jsumping напрямую использовать фреймворк с базовым уровнем знаний. ID настоятельно рекомендуем вам ознакомиться с шаблонами и концепциями ООП. Этот article в то время как старый дает прямое сравнение перехода от процедурного к ООП и позволяет вам создать базовую структуру MVC. Есть много ресурсов, похожих на это, поэтому я буду google, если бы вы были вами.

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

Хотя я не использую его лично, потому что он недостаточно гибкий, я думаю, что порекомендую CakePHP в вашем случае. Symfony также может быть хорошим выбором, но он чрезвычайно сложный, и если вы новичок в OOP, вы можете потерять свой разум ... То же самое для Zend :-)

Я бы также рекомендовал PHP Objects, Patterns, and Practice, Second Edition в качестве общего справочника. Его схож с PoEAA, но специфичен для реализаций и примеров PHP.

0

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

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

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

1

В качестве первого шага вы можете просто взять процедурный скрипт и убедиться, что все большие блоки кода находятся в функции. Затем поместите все функции, которые похожи или принадлежат друг другу в другом файле. Например, сгруппируйте все связанные с пользователем функции в user.php, функции, специфичные для базы данных, в базу данных.php и т. Д. Если вы на некоторое время написали процедурный стиль, вы, возможно, уже имеете это.

Теперь первый шаг заключается в преобразовании этих файлов в классы:

сделать новый user.php содержать пустой класс «пользователя». Теперь скопируйте все пользовательские функции в этот класс (чтобы они стали методами).

Пример:

перед тем


function authenticate() 
{ 
    // auth 
} 
function createUser() 
{ 
    // create new user 
} 

после


class person 
{ 
    public function __construct() 
    { 
    // create new user 
    } 
    public function authenticate() 
    { 
    // auth 
    } 
} 

Если вы делаете это для всех групп функций, вы в конечном итоге с очень простой объектно-ориентированной программы.

Пример: вместо вызова $user = createUser('john doe'); вы просто делаете $user = new user('john doe');

Я рекомендую вам практиковать это так, просто с помощью простого сценария, чтобы начать с. Обучение OO начинается с этого.

, когда вы закончили свою первую программу, подобную OO, ищите вещи для улучшения. Является ли один класс слишком большим? Разделите его на несколько подклассов. Являются ли несколько классов почти одинаковыми? Возможно, пусть все они наследуют один базовый класс.

Вкратце: просто начните делать это. Это не совсем так. Представьте себе класс как функцию функций.

Всякий раз, когда вы входите в ситуацию, когда вы чувствуете, что что-то не так с вашим кодом, ищите руководство с лучшими практиками или примерами для OO (не специально для PHP), их много.

P.S. как указывают некоторые из ответов, я не думаю, что вы не должны ожидать, что кто-то напишет половину вашего приложения. Просто постарайтесь начать и задать вопрос, если он не работает.

Смежные вопросы