Полностью Объектно-ориентированная платформа в PHP

Предпочтительный путь (потому что это команда plumbing , предназначенная для программирования):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

Другой способ (менее предпочтительный для скриптов, потому что это фарфор , предназначенный для пользователя)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • --no-commit-id подавляет вывод идентификатора фиксации.
  • --pretty аргумент указывает пустую строку форматирования, чтобы избежать появления трещины в начале.
  • Аргумент --name-only показывает только те имена файлов, которые были затронуты (спасибо Хэнк).
  • -r аргумент состоит в том, чтобы возвращать в поддеревья
17
задан Click Upvote 11 February 2009 в 04:16
поделиться

10 ответов

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

MVC - да, передает, MVC является стандартом для веб-приложений. Это хорошо документируется и понятная модель. Кроме того, это делает на прикладном уровне, что ООП делает на уровне класса, то есть, это сохраняет вещи разделенными. Хорошее дополнение к MVC Фильтр Прерывания шаблон. Это помогает присоединить фильтры для пред - и выполняющий последующую обработку запрос и ответ. Общее использование регистрирует запросы, сравнительное тестирование, проверку доступа, кэширование, и т.д.

, представление ООП из базы данных, tables/rows, также возможно. Я использую ДАО или ActiveRecord на ежедневной основе. Другой подход к проблемам ORM Шлюз Данных строки и Шлюз Данных Таблицы . Вот реализация в качестве примера из TDG использование ArrayAccess интерфейс.

шаблоны HTML также могут быть представлены как объекты. Я использую объекты Представления в сочетании с движком шаблонов Присяжного острослова. Я нахожу эту технику ЧРЕЗВЫЧАЙНО гибкой, быстрой, и простой в использовании. Представление представления объекта должно реализовать __set метод, таким образом, каждое свойство распространено в шаблон Smarty. Дополнительно __toString метод должен быть реализован к вложению представлений поддержки. Посмотрите пример:

$s = new View();
$s->template = 'view/status-bar.tpl';
$s->username = "John Doe";
$page = new View();
$page->template = 'view/page.tpl';
$page->statusBar = $s;
echo $page;

Содержание view/status-bar.tpl:

<div id="status-bar"> Hello {$username} </div>

Содержание view/page.tpl:

<html>
<head>....</head>
<body>
    <ul id="main-menu">.....</ul>
    {$statusBar}
    ... rest of the page ...
</body>
</html>

Этот способ, которым Вам только нужно к echo $page и внутреннее представление (строка состояния), будет автоматически преобразован в HTML. Взгляд полноценное внедрение здесь . Между прочим, с помощью одного из Прерывания Фильтров, можно обернуть возвращенное представление с нижним колонтитулом HTML и заголовок, таким образом, Вы не должны волноваться о возврате полной страницы от Вашего контроллера.

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

проверка Формы является определенно вещью, которая могла быть сделана способом OO. Создайте сложный объект блока проверки допустимости использование Составной шаблон . Составной блок проверки допустимости должен выполнить итерации через поля формы и присвоил простые блоки проверки допустимости, и дайте Вам Ответ "да"/"нет". Это также должно возвратить сообщения об ошибках, таким образом, можно обновить форму (через Ajax или перезагрузку страницы).

Другой удобный элемент является классом автоматического перевода для изменения данных в дб для подхождения для пользовательского интерфейса. Например, если Вы имеете поле INT (1) в дб, представляющем булево состояние, и используете флажок в HTML, который приводит к пустой строке или "on" в _POST или массиве _GET, Вы не можете просто присвоиться один в другого. Наличие сервиса перевода, который изменяет данные для подхождения для Представления или для дб, является очевидным способом очистки данных. Кроме того, сложность класса перевода не замусорила Ваш код контроллера даже во время очень сложных преобразований (как [1 119] одно преобразование синтаксис Wiki в HTML).

Также проблемы i18n могут быть решены с помощью объектно-ориентированных методов. Мне нравится использовать __ функция (двойное подчеркивание) для получения локализованных сообщений. Функция вместо того, чтобы выполнить поиск и возвратить сообщение дает мне Прокси объект и предварительно регистрирует сообщение для более позднего поиска. Как только объект Прокси продвинут в Представление, И Представление преобразовывается в HTML, i18n бэкенд действительно ищет все предзарегистрированные сообщения. Таким образом, только один запрос выполняется, который возвращает все требуемые сообщения.

управление Доступом проблемы могут быть решены с помощью Бизнес-шаблона Делегата. Я описал это в моем другой ответ Stackoverflow .

Наконец, если требуется играть с существующим кодом, который полностью объектно-ориентирован, бросьте взгляд на [1 122] платформа Tigermouse . Существуют некоторые диаграммы UML на странице, которая может помочь Вам понять, как работают вещи. Не стесняйтесь принимать дальнейшее развитие этого проекта, поскольку у меня больше нет времени для работы над ним.

Имеют хорошее взламывание!

30
ответ дан 30 November 2019 в 10:06
поделиться

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

Рассмотрение количества времени это берет для создания хорошей платформы, занимая время для изучения то, что Вы любите и ненавидите о существующих решениях, побледнеет по сравнению. Вы не должны даже просто смотреть на php платформы. Направляющие, Django и т.д. все популярен по причине.

Здание платформа полезна, но Вам нужны четкий план и понимание задачи под рукой, которая является, где исследование входит.

Некоторые ответы на Ваши вопросы:

  • Да, это должно, вероятно, использовать MVC, поскольку образцовая парадигма контроллера представления переводит хорошо в мир веб-приложений.
  • Для создания моделей от записей в таблицах в Вашей базе данных, изучите ORM's и Активный Рекордный шаблон. Существующие реализации для исследования этого, о котором я знаю, включают Доктрину, больше может быть найдено путем поиска на здесь.
  • Для чего-либо Ajax имел отношение, я предлагаю использовать jQuery в качестве начальной точки, поскольку это делает Ajax очень легким встать и выполнение.
17
ответ дан 30 November 2019 в 10:06
поделиться

Создание Вашей собственной платформы является хорошим способом получить оценку для некоторых вещей, которые могли бы продолжаться под капотом других платформ. Если Вы - перфекционист как я, это дает Вам хорошее оправдание мучиться над каждой небольшой деталью (например, должен тот объект называться X или Y, должен я использовать статический метод или метод экземпляра для этого).

я записал свое собственное (почти полностью платформа OO только что), таким образом, вот мой совет:

  • , Если Вы работали с другими платформами прежде, рассмотрите то, как что Вы любили/, и удостоверьтесь, что Ваш дает Вам точно, что Вы хотите.
  • я лично люблю шаблон MVC, я не мечтал бы о выполнении проекта без него. Если Вам нравится MVC, сделайте это, если Вы не делаете не, беспокоятся.
  • , Если Вы хотите сделать материал JavaScript/AJAX, действительно пользуйтесь библиотекой JavaScript. Кодирование всего Вашего собственного JavaScript с нуля учит Вас немного DOM и JavaScript в целом, но в конечном счете это - пустая трата времени, внимание на создание Вашего приложения/платформы лучше вместо этого.
  • , Если Вы не хотите принимать другую оптовую торговлю платформой, смотрите в том, существуют ли другие компоненты с открытым исходным кодом, которые Вы любите и могли бы хотеть использовать, такой, поскольку Продвигают , Присяжный острослов , ADOdb, или ГРУШЕВЫЕ компоненты . Запись Вашей собственной платформы не обязательно означает писать все с нуля.
  • шаблоны разработки Использования, где они имеют смысл (например, одиночные элементы для доступа к базе данных, возможно), но не зациклены на них. В конечном счете сделайте то, что Вы думаете, производит самый опрятный код.
  • Наконец, я изучил много путем копания в немного философия Ruby on Rails , Вы никогда не можете использовать RoR (я не сделал), но некоторые понятия (особенно Конвенция по Конфигурации) действительно нашли отклик у меня и действительно влияли на мои взгляды.

В конечном счете, если Ваши потребности не являются особенными, большинство людей будет более продуктивным, если они примут существующую платформу. Но изобретение велосипед действительно учит Вас больше колесам.

6
ответ дан 30 November 2019 в 10:06
поделиться

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

2
ответ дан 30 November 2019 в 10:06
поделиться

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

Мы обычно работаем с Платформой Зенда, и это является главным образом потрясающим, но пробующий к модульному тесту / тест-драйв основанный на ZF код далеко не нуждается в мазохизме.

, Если Вы могли бы служить основой, которая заменяет части MVC ZF с чем-то, что позволяет нам писать тестируемый код, все еще позволяя нам использовать части библиотеки ZF, я буду - вполне буквально - покупают Вас пиво.

я куплю Вас два пива, если Вы угробите Ajax. Существует огромный залив между платформой PHP OO и платформой JavaScript.

1
ответ дан 30 November 2019 в 10:06
поделиться

Как сказанный Jim OHalloran, пишущий Вашу собственную платформу дает Вам очень хорошее понимание, как другие платформы делают вещи.

Тем не менее я записал уровень доступа к данным прежде тот почти абсолютно абстрактный далеко любой SQL. Код приложения мог запросить соответствующий объект, и уровень абстракции сделал большое волшебство выбрать данные только, когда это было необходимо, напрасно не повторно выбирал, сохраненный только, когда это было изменено и поддерживало помещение некоторых объектов на различных базах данных. Это также поддерживало копируемые базы данных, и уважало задержку репликации и имело интеллектуальный объект коллекции. Это было также очень расширяемо: ядро было управляемым параметром, и я мог добавить совершенно новый объект приблизительно с 15 строками кода - и получил все волшебство бесплатно.

я также записал механизм расположения CRUD, который использовался для значительного процента сайта. Ядро было параметром, управляемым, таким образом, это могло выполнить список и отредактировать страницы для чего-либо, после того как Вы записали список параметров. Это автоматически сделало разбиение на страницы, save-new-delete поддерживают и т.д. и т.д., усиливая объектный слой выше. Это не было объектно-ориентировано в и себя, но это, возможно, было сделано так.

, Другими словами, объектно-ориентированная платформа в PHP не только возможна, это может быть очень эффективно. Это было всем в PHP 4, BTW, и я увеличил против того, что было возможно с объектами PHP 4 пару раз. :-)

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

2
ответ дан 30 November 2019 в 10:06
поделиться

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

функции я реализовал меня:

  • Архитектура MVC
  • объект Аутентификации
  • класс
  • Доступа к базе данных конфигурация перезаписи URL
  • почтовый класс
  • класса
  • Разбиения на страницы Шифрование

функции я смотрел на и думал, забудьте это! Я создам сверху кого-то elses:

  • Кэширующийся класс
  • класс
  • проверки Формы класс
  • FTP классы Сменной способности

, Конечно, пишущий платформу, которая превосходит опции с открытым исходным кодом по характеристикам, возможен, но почему Вы обеспокоились бы?

2
ответ дан 30 November 2019 в 10:06
поделиться

Вот мои предложения:

  1. Остановка, что Вы делаете.
  2. Это было уже сделано до смерти.
  3. Щелчок этот Платформа Зенда или что CakePHP или возможно даже этот Платформа Перерыва .

Теперь, мои причины:

..., если Вы работали с разработчиками вообще, Вы работали с разработчиками, которые любят не изобретать велосипед ни на каком серьезном основании. Это очень, шаблон очень общего отказа.

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

... "О, я собираюсь создавать свою собственную платформу, создавать мое собственное все", и она все собирается быть более дрянной, чем материал, Вы могли просто выйти и добраться...

от Подкаст StackOverflow № 3 .

Так, сэкономьте себе некоторое время и работу над чем-то, что решает проблему для людей как веб-приложение, которое позволяет людям автоматически обновить Twitter, когда лоток их кошки нуждается в очистке. Проблема "Объектно-ориентированной Платформы PHP" сделана. Независимо от того, что платформа, которую Вы хлопаете вместе, никогда не будет так же надежна или полезна или многофункциональна как любая из полностью поддерживаемых платформ в свободном доступе, доступных СЕГОДНЯ .

Это не означает, что у Вас не может быть полезного опыта, но почему делают это в темноте, создавая платформу, которая превратится в бесполезный блоб кода, оставляя Вас ни с чем для показа в течение времени? Разработайте веб-приложение, что-то, чтобы люди использовали и наслаждались, я думаю, что Вы найдете опыт, невероятно вознаграждающий и ОБРАЗОВАТЕЛЬНЫМ .

4
ответ дан 30 November 2019 в 10:06
поделиться

Рискуя тем, чтобы звучать бойким, это кажется мне как любой другой проект программного обеспечения в этом смысле:

необходимо определить требования ясно, включая мотивацию и приоритеты:

  • , ПОЧЕМУ делают это? То, каков ключ, приносит пользу Вам, надеются понять? Если ответ является "скоростью", Вы могли бы сделать одну вещь, если это - "простота кодирования", Вы могли бы сделать другого, если это - "полезный опыт", Вы могли бы сделать thid

  • , каковы основные проблемы, которые Вы пытаетесь решить? И которые являются самыми важными? Безопасность? Легкое поколение UI? Масштабируемость?

ответ на, "какие функции это должно иметь" действительно, зависит от ответов на вопросы как те, которые выше.

5
ответ дан 30 November 2019 в 10:06
поделиться

У меня есть идеальная ссылка для Вас мой друг: http://nettuts.com/tutorials/php/creating-a-php5-framework-part-1/ . Это - потрясающее учебное руководство, я посмотрел на, и не слишком подавляющий. Плюс осматривают раздел PHP того сайта, я видел статью о CRUD. Что касается взгляда Ajax в другом месте, но необходимо запустить где-нибудь, и это учебное руководство является потрясающим.

Примечание: это учебное руководство имеет 3 части, и я думаю, что оно поднимает MVC во втором взносе, но запускает первую часть с помощью других методов.

2
ответ дан 30 November 2019 в 10:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: