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

<!--
Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-->

<html>
  <head>
    <title>Rename Refactoring and Other Editor Improvements in NetBeans IDE 7.0 for PHP</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
    <meta name="description" content="This screencast shows the new feature of NetBeans IDE for PHP
          7.0. These features are rename refactoring, type hierarchy view, line wrapping, and showing/hiding
          non-printable characters.">
    <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> 
  </head>
  <body>
    
    
    <h1>Rename Refactoring and Other Editor Improvements in NetBeans IDE 7.0 for PHP</h1>
    
    <table><tr><td class="valign-top">
          
          <p>
            This screencast shows the new features of NetBeans PHP editor 7.0.
          </p>
          <ul>
              <li><b>Rename Refactoring</b> You can rename an element such as a class name
              across all files in a project. The feature forces you to preview your changes before
              you can make them. The preview window shows you every location of the element and lets
              you exclude individual occurrences of the element from being renamed. Rename Refactoring
              is contrasted with the older feature, Instant Rename, which lets you only rename an element 
              within a file and which does not provide a preview window.</li>
              <li><b>Type Hierarchy View</b> See all the super types and sub types of a PHP class,
              including interfaces and classes that implement an interface.</li>
              <li><b>Line Wrap</b> You can configure the Editor to wrap lines.</li>
              <li><b>Show non-printable characters</b> You can show and hide non-printable characters
              in the Editor.</li>
          </ul>
          <p>
            Author: Jeff Rubinoff<br>
            Time: 8:47 <br />
            <a target="_blank" href="http://bits.netbeans.org/media/rename-refactoring.flv">Download</a> [18.3 MB]
          </p>
          
          <div class="feedback-box" style="float:left">
            <a href="/about/contact_form.html?to=3&amp;subject=Feedback: PHP Rename Refactoring Screencast">Send Feedback on This Tutorial</a>
          </div>
          <br style="clear:both;">
          
          
        </td><td class="valign-top" >
          

       <div id="flashContent"></div>
 <script src="/images_www/js/data_tables/js/jquery.dataTables.min.js" type="text/javascript"></script>
 <script src="/images_www/js/mediaplayer-5.2/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
var targetFile='http://bits.netbeans.org/media/rename-refactoring.flv';
var pl = new SWFObject('/images_www/js/mediaplayer-5.2/player.swf','player','400','300','9');
pl.addParam('allowfullscreen','true');
pl.addParam('allowscriptaccess','always');
pl.addParam('flashvars','file='+targetFile+'&autostart=true');
pl.write('flashContent');
</script>

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