Отделение операций над данными от визуального интерфейса

. . . . .

internetПродемонстрируем на примере, как работает модель MVC. Для этого возьмем простую систему публикации новостей и посмотрим, как реализовать ее с приме­нением этой модели и без нее.

Стандартный способ извлечения новостей из базы данных и их публикации — написать PHP-сценарий, который бы подключался к базе данных, посылал в нее запрос, перебирал в цикле результаты запроса, генерировал для каждой заметки HTML-код и отображал его. Следующий код является примером такого сценария: [...]

. . . . .
  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Взаимодействие запросов с классом Zend_Controller

analizЕсли запустить на выполнение код из листинга 2.4 (обратившись из браузера к странице http: //phpweb20), ничего полезного не произойдет — отобразится со­общение об ошибке. Поэтому надо рассмотреть вопрос, как же запросы взаимодей­ствуют с классом Zend_Controller.

Примечание

В зависимости от конфигурации среды РНР, сообщения об ошибках могут выводиться в журнал событий файловой системы, а не отображаться на экране. Поэтому, если происходит что-то странное, а сообщений об ошибках нет, нужно искать и смотреть файл журнала событий. Обработка ошибок (наподобие «4 04 Файл не найден») рассматривается в главе 14. [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Аутентификация

viktor■   Аутентификация заключается в проверке, действительно ли пользова­тель — тот. за кого себя выдает. Обычно для этого проверяется его пользова­тельское имя-псевдоним и прилагающийся к нему пароль.

■   Авторизация определяет, можно ли допустить пользователя к определенно­му ресурсу — при условии, что он успешно прошел процедуру аутентифика­ции. В ходе авторизации также определяется, что разрешено делать на сайте пользователю, не прошедшему аутентификацию. В нашем приложении под ресурсом надо понимать определенную веб-страницу или операцию — на­пример, операцию помещения в блог новой заметки. [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Средства и возможности ++

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

■   Отображение существующих заметок блога. Используя функции, соз­данные для извлечения сразу нескольких записей блога из базы данных, мы создадим индексную страницу с перечнем заметок пользователя, чтобы он мог просматривать и редактировать ilk по мере надобности. Эта страница будет организована с применением технологии Ajax, чтобы ускорить доступ к заметкам блога. [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Профили пользователей

ayf1Может быть, вы заметили, что таблица users (листинг 3.1) не содержит ника­кой полезной информации о самих пользователях — ни имен, ни адресов элек­тронной почты. Для хранения этих данных будет создана егце одна таблица — users_profile.

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

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Проблемы с локальной сетью на Acer Aspire easyStore H340

ayfon1На днях мой сервер на базе Acer Н340 был в отключке практически два дня и все мои сайты включая этот были не доступны.

Проблема возникла из за того, что я по ошибке отключил локальную сеть на Windows Home Server.  Включить  обратно было довольно проблематично, так как доступ к управлению осуществлялся до этого только через удаленный рабочий стол, то есть через локальную сеть.

На самом Acer Н340 нет встроенной видео карты и эта проблема меня просто убивала, сами подумайте, как можно включить локалку ? когда нет связи с сервером вообще. [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Назначение данных

internetПервое, что следует сделать, — это назначить данные, которые будут ассоции­роваться с шаблоном. В данном случае я создал простой массив $articles, содер­жащий несколько выдуманных заголовков новостей. После создания и конфигури­рования объекта $smarty я присвоил массив $articles объекту $smarty и в конце выполнил вывод файла news/index, tpl. Согласно заданному значению перемен­ной template_dir, полный путь к этому шаблону выглядит так: ./templates/ news/index.tpl.

Теперь посмотрим, как же может выглядеть шаблон news/index.tpl. Он до­вольно-таки насыщен операциями.

<hl>News</hl>

{if $news|@count == 0} <P>

No news found i

</p > {else}

<ul>

{foreach from=$news item=article}

<li>{$article|escape}</li> {/foreach} </ul> {/if}

Первым делом следует отметить, что в этом файле нет привычных для докумен­та HTML тегов (например, типа документа, <html>, <body>). Вообще-то, они долж­ны там быть, но я решил пока не загромождать шаблон.

Далее идет оператор if /else, заключенный в фигурные скобки. Это стандартный синтаксический разделитель для шаблонов Smarty. Заметьте также, что выражения в операторе if в Smarty не заключаются в круглые скобки, в отличие от РНР.

Еще следует отметить, что в этом шаблоне обращение к данным выполняется через переменную $news. В предыдущем примере с обработкой новостей я ассо­циировал переменные $articles с шаблоном, используя имя news.

В ходе обработки данных вначале, с помощью функции РНР count () проверя­ется, не пуст ли массив $news. Фактически используется модификатор системы Smarty. Чтобы применить модификатор, используется вертикальная черта. Пере­менная передается в модификатор в качестве первого ар1умента. В системе Smarty имеется несколько встроенных модификаторов, однако любая функция РНР тоже может использоваться как модификатор. Функция count () принимает в качестве аргумента массив, поэтому я ставлю перед именем символ Если этого не сделать, массив будет перебираться в цикле, и каждый его элемент передаваться в функцию count (), в то время как нам нужно передать массив целиком.

В модификаторы также можно передавать аргументы. Например, если нужно из­влечь первые три символа из строки функцией subs t г (), это можно сделать таким образом: $myStr | substr:0:3, что эквивалентно вызову substr ($myStr, 0, 3) в РНР. Чтобы вывести переменную, заключите ее в фигурные скобки. Таким образом, чтобы вывести на экран первые три символа строки в составе шаблона, используется выражение ($myStr | substr: 0 :3}.

Примечание

Несколько модификаторов можно соединять в цепочку. В приведенном примере можно вывести не просто первые три символа, а еще и в верхнем регистре, применив в качестве дополнительного модификатора функ­цию strtoupper (). Это делается с помощью выражения {$mystr| substr :0: з | strtoupper}. Модификаторы применяются по порядку, слева направо.

Далее в шаблоне используется тег {foreach} для перебора массива $news в цик­ле. Эта конструкция практически идентична функции foreach () в РНР. Массив передается путем использования аргумента from, а текущий элемент массива при­сваивается переменной, указанной в аргументе item. Таким образом, в приведен­ном примере PHP-эквивалентом выражения {foreach from=$news item=article} будет foreach ($news as $article). Если нужен еще и ключ массива, можно ука­зать аргумент key: {foreach from=$news item=article key=k}, что эквивалент­но foreach ($news as $k =>$article) в PHP.

Итак, каждый элемент массива выводится в цикле foreach. Можно было бы просто указать $article, но я слегка усовершенствовал это выражение, добавив модификатор escape (это модификатор системы Smarty. а не функция РНР). Им следует активно пользоваться при выводе данных в документах HTML, поскольку он преобразовывает специальные символы HTML в escape-последовательности и тем самым делает документ синтаксически правильным. Другими словами, знак > становится &gt;, знак < превращается в &lt;, а & — в &ашр;, в числе про­чих.

Наконец, цикл foreach закрывается тегом {/foreach}. Обратите внимание на сходство с тегами HTML. Аналогично, блок {if} закрывается тегом {/if}.

[...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Выбор систем управления шаблонами

internetЧто касается систем управления шаблонами, то их выбор не ограничивается Smarty. У большинства PHP-разработчиков есть свое мнение о том, какой системой пользоваться. К системе Smarty обычно выдвигается ряд претензий.

■   Код Smarty имеет немалый объем (примерно 150 Кбайт кода в файлах Smarty .class .php и Smarty_Compiler. class . php, вместе взятых); его вы­полнение отнимает немало времени, учитывая необходимость обрабатывать каждый запрос к веб-сайту.

■   Непонятно, зачем нужно использовать еще один метаязык для вывода кон­тента, когда РНР создан для тех же самых операций. [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Язык программирования Pascal

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

Сегодня Pascal один из самых популярных языков программирования, именно с него начинают постигать азы программостроения многие школьники. Моё личное отношение к нему самое наилучшее, с этим языком я первый раз ездил на областную олимпиаду. С него начал обучение, иногда использую в работе.

Задача:

Например, когда мне нужны были аккаунты на mail.ru я нашел отличную прогу для их автоматичсекой регистрации, но после реги этих аков данные с логином и паролем выводились в формате login;password а для их дальнейшего использования мне нужен был вид login:password. [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Установка веб-сервера Apache

internetЭтот веб­сервер доступен в вариантах для Linux и Windows. Не могу гарантировать, что весь код из этой статьи будет корректно работать на IIS, поэтому если у вас установлена система Windows, вам следует использовать сервер Apache. Можно работать и с бо­лее старой версией Apache (например, 1.3 или 2.0). Никаких проблем при этом воз­никнуть не должно, и все же полной гарантии я дать не могу.

Программное обеспечение веб-сервера Apache 2.2 доступно для загрузки на сайте http://httpd.apache.org. У нас будет использоваться типичная конфигу­рация с включением всех модулей (в том числе mod rewrite, который необходим для работы Zend_Controller). Можно также по желанию добавить несколько оп­циональных средств, которые не включены по умолчанию (например, SSL).  [...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS
Страница 10 из 12« Первая...89101112
. . . . . . . . . . . . . . . . . . . .