// 
//     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.
//

= NetBeans 6.5 中 PHP 支持的演示 - 第 II 部分：编辑器功能
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans 6.5 中 PHP 支持的演示 - 第 II 部分：编辑器功能 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans 6.5 中 PHP 支持的演示 - 第 II 部分：编辑器功能

|===
|这是 NetBeans IDE 6.5 的 PHP 发行版演示的第二部分。该部分介绍了基本编辑器功能。

作者：Petr Pisl
播放时长：6:16
link:http://bits.netbeans.org/media/NetBeans65PHP_demo_part_II.flv[+下载+] [14 MB]

*相关链接*

* link:../../../kb/docs/php/project-config-screencast.html[+NetBeans 6.5 中 PHP 支持的演示 - 第 I 部分：项目和配置+]
* link:../../../features/php/index.html[+适用于 PHP 的 NetBeans IDE+]
* link:../../../kb/trails/php.html[+PHP 学习资源+]
* link:http://blogs.oracle.com/netbeansphp/[+"NetBeans for PHP"(NetBeans PHP) 博客+]
link:../../../about/contact_form.html?to=3&subject=Feedback: PetrP's 6.5 PHP Editor screencast[+发送有关此教程的反馈意见+]
 |   
|===
