// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Создание слайд-шоу Flickr с помощью редактора PHP
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Создание слайд-шоу Flickr с помощью редактора PHP - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Создание слайд-шоу Flickr с помощью редактора PHP

|===
|Джастин Болтер (Justin Bolter) продемонстрировал новые функции PHP в IDE NetBeans 6.9-7.0 путем пошагового описания создания простого приложения для доступа к Flickr. Вы научитесь преобразовывать изображения Flickr в простейшую демонстрацию JavaScript и CSS.

Этот учебный курс является частью link:../intro-screencasts.html[+Видеообзора IDE NetBeans 6.9-7.0+].

Автор: Джастин Болтер (Justin Bolter)
Продолжительность: 14:00 
link:http://bits.netbeans.org/media/NB65-flickrPHP-Screencast.flv[+Загрузить+] [72 МБ]


*Связанные ссылки*

* link:https://netbeans.org/kb/trails/php.html[+ Учебная карта по PHP+]
* link:http://blogs.sun.com/netbeansphp/[+Блог "NetBeans для PHP"+]
* link:http://phpflickr.com/[+PHPFlickr+]
* link:http://jquery.com/[+jQuery+]

link:/about/contact_form.html?to=3&subject=Feedback:%20PHP+Flickr%20in%20NB6.5%20screencast[+Мы ждем ваших отзывов+]
 |   
|===
