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

= The PHP Editor in NetBeans IDE 6.9-7.0 (Preview)
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: The PHP Editor in NetBeans IDE 6.9-7.0 (Preview) - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, The PHP Editor in NetBeans IDE 6.9-7.0 (Preview)

|===
|Roman Strobl shows a development build of the new PHP features available in NetBeans IDE 6.9-7.0. A PHP project can be automatically deployed to a local web server, to a remote site (via FTP), or you can run the script on the command line. The PHP Editor in NetBeans IDE 6.9-7.0 supports all standard features such as code completion, syntax highlighting, mark occurrences, refactoring, code templates, documentation pop-up, code navigation, editor warnings and task list.

Author: Roman Strobl
Time: 5:10 
link:https://netbeans.org/files/documents/4/2028/php_demo.zip[+Download+] ( 6.35 MB )


*Related links*

* link:../../../kb/docs/php/editor-screencast.html[+Petr's NetBeans IDE 6.9-7.0 PHP Editor Screencast+]
* link:../../../features/php/index.html[+NetBeans IDE for PHP+]
* link:../../../kb/trails/php.html[+The PHP Learning Trail+]
* link:http://blogs.oracle.com/netbeansphp/[+NetBeans for PHP Weblog+]
link:../../../about/contact_form.html?to=3&subject=Feedback: Roman's 6.5 PHP Editor screencast[+Send Feedback on This Tutorial+]
 |

Unable to load Flash player.

 
|===
