<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>The PHP Editor in NetBeans IDE 6.9-7.0 (Preview)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
    <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
  </head>
  <body>
    
    
    <h1>The PHP Editor in NetBeans IDE 6.9-7.0 (Preview)</h1>
    
    <table>
      <tr>
      <td class="valign-top">
          
          <p>
            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.
          </p>
          <p>Author: Roman Strobl<br>
            Time: 5:10 <br>
            <a target="_blank" href="https://netbeans.org/files/documents/4/2028/php_demo.zip">Download</a> ( 6.35 MB )
          </p>
          <p><br></p>
          
          <p><b>Related links</b></p>
          <ul>
            <li><a href="../../../kb/docs/php/editor-screencast.html">Petr's NetBeans IDE 6.9-7.0 PHP Editor Screencast</a>
            <li><a href="../../../features/php/index.html">NetBeans IDE for PHP</a>
            <li><a href="../../../kb/trails/php.html">The PHP Learning Trail</a>
            <li><a target="_blank" href="http://blogs.oracle.com/netbeansphp/">NetBeans for PHP Weblog</a>
          </ul>
          <div class="feedback-box" style="float:left">
            <a href="../../../about/contact_form.html?to=3&subject=Feedback: Roman's 6.5 PHP Editor screencast">Send Feedback on This Tutorial</a>
          </div>
          <br style="clear:both;">
        </td><td width="425" class="valign-top" class="align-center">
          
          <script type='text/javascript'>
            var var_pid = "6656";
            var var_furl = "http://netbeans.tv/images/";
            var var_notPanorama = "0";
            var var_altLink = "https://netbeans.org/files/documents/4/2028/php_demo.zip";
          </script>
          
          <div id="videoPlayer" class="video">
          <p>Unable to load Flash player.</p></div>
          
          <script type="text/javascript">

            <!--
            var so = new SWFObject(var_furl+"playerWidget.swf" , "pv", "410", "331", "8", "#666666");
            so.addParam("quality", "high");
            so.addParam("allowScriptAccess", "sameDomain");
            //so.addParam("menu", "false");
            so.addParam("allowFullScreen", "true");
            so.addVariable("autoPlay", "false");
            so.addVariable("urlFileIdList", var_pid);
            so.addVariable("show_title", "true");
            so.addVariable("PLAY_CALLBACK","emphasize");
            so.addVariable("resizeLimitMax","true");
            so.addVariable("lang", "en");
            so.addVariable("flash_play","true");
            so.addVariable("author_name","NetBeans.tv");
            so.addVariable("configUrl",'http://sun.ora.ma/config.sun.ora.ma.xml');
            if (var_notPanorama == '1')
            {
              so.addVariable("clickAction","clickAction");
            }
            so.write("videoPlayer");
            // -->

          </script>
          
      </td></tr>
    </table>
    
  </body>
</html>
