Difference between #32 and #29 of NetBeans IDE and Yii projects

unchanged
Title
NetBeans IDE and Yii projects
unchanged
Category
Tutorials
unchanged
Tags
IDE, Selenium, PHPUnit, XDebug, NetBeans
changed
Content
This page is created to supply short directions and general tips for managing a
Yii application in NetBeans IDE.

## 1. Code completion

To get context sensitive code completion, follow these steps:

- Include Yii folder (assuming it is properly placed outside project directory)
  - Open "File > Project properties > PHP Include Path" and add
the Yii framework root path
- Ignore yiilite.php to avoid doubled/missing documentation
  - Open "Tools > Options > Miscellaneous > Files"
  - Add to the front of "Files Ignored by the IDE" the file
"^(_yiilite\\.php_|CVS|SCCS|...."
  - Restart NetBeans
- Code completion in view files ###
  - Add the following PHPDoc statement at the head of the file to use code
completion in view files. (you may add additional passed parameters as well)
~~~
[php]
/* @var $this PostController */
/* @var $model Post */
$this->getSomeProValue(); // possible with code completion
$model->author; // possible with code completion
~~~

#### Usage:

- Typing suggestions: Ctrl-Space
- Show Function parameters: Ctrl-P
- Comment your own code with PHPDoc style. [Here's a good
example](http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_sample2.pkg.html).

## 2. Code templates

You can create code templates for commonly used/overridden function in Yii.
For example, if you want to add an beforeSave() function in your model, by
typing a shortcut you can automatically have the function template in
place. There are additional shortcuts for common stuff like Yii::app(),
Yii::t(), Yii::app()->user->checkAccess(), and more!

 - Download this template set to get started:
[http://fbe.am/7bd](http://fbe.am/7bd). It contains:
  - For **models**: ybehaviors, yrelations, yrules, yscopes, ydefaultscope,
yafterconstruct, yafterdelete, yaftersave, yaftervalidate, ybeforedelete,
ybeforefind, ybeforesave, ybeforevalidate 
  - For **controllers**: yaccessrules, yfilters, yactions, ybehaviors,
ybeforeaction, yafteraction, ybeforerender, yafterrender
  - **Generic**: yinit, yrun[http://fbe.am/hly (version
2)](http://fbe.am/hly). View all available commands [in this printable cheat
sheet](http://www.cheatography.com/hoplayann/cheat-sheets/yii-code-templates-for-netbeans/).
 - Go to "Tools > Options > Editor > Code Templates"
 - Hit "Import", select the file, and choose "Code
Templates"

#### Usage:

 - Type the shortcut and hit TAB
 - More info: [NetBeans
Docs](http://netbeans.org/kb/docs/php/code-templates.html#using-templates)
 - Example:
~~~
[php]
// typing: ybeforesave + TAB
// expands to:

/**
 * This method is invoked before saving a record (after validation, if any).
 * @return boolean whether the saving should be executed. Defaults to true.
 */
protected function beforeSave()
{
	
	return parent::beforeSave();
}
~~~

## 3. Testing

To run functional tests and unit tests in Yii, recommended is installing PHPUnit
and SeleniumRC.

- Install PHPUnit
  - Follow [the official version 3.6 installation
instructions](http://www.phpunit.de/manual/3.6/en/installation.html).
  - Open "Tools > Options > PHP > Unit Testing" and set the
correct path to the launch script. This is phpunit.bat in Windows and usually
/usr/bin/phpunit in Linux.
- Install SeleniumRC by getting the NetBeans plugin
  - Open "Tools > Plugins > Available Plugins"
  - Install "Selenium Module for PHP"
- Configure project options
  - Open "File > Project properties > Sources" and set
"Test Folder" to \[PROJECT ROOT\]/protected/tests (If the whole
project testing doesn't work, try \[PROJECT ROOT\]/protected/tests/unit)
  - Open "File > Project properties > PHPUnit" and set "Use
Bootstrap" to \[PROJECT ROOT\]/protected/tests/bootstrap.php, and "Use
XML Configuration" to \[PROJECT ROOT\]/protected/tests/phpunit.xml

#### Usage:

- Test whole project: Alt+F6
- Test single file: Shift-F6
- Check code coverage (right click project > Code Coverage)

## 4. Debugging

- Install Xdebug (usually already available in your installation):
  - Follow [the official installation
instructions](http://xdebug.org/docs/install).
- Include the Xdebug extension for PHP:
  - In php.ini enable (by removing ; prefix) these settings:
<pre>zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
       xdebug.remote_enable = 1
       xdebug.remote_handler = "dbgp"
       xdebug.remote_host = "localhost"
       xdebug.remote_port = 9000</pre>

#### Usage:

- Debug project: Ctrl-F5
- Use breakpoints, walk through running code, and watch variables and objects in
real-time. :)
- If you want to stop the debugger from pausing on the first line for every
request, simply turn that "feature" off by clicking: Tools >
Options > PHP > Debugging > Stop at First Line (uncheck) 


## Got problems or questions?

Do NOT post a comment on this wiki page, but go to the forums:
<http://www.yiiframework.com/forum/index.php?/topic/11735-netbeans-ide-and-test-driven-development/>