-
Notifications
You must be signed in to change notification settings - Fork 1
4.2. Refactoring
Copy lines which you want to refactor. Refactor>Refactor this or ctrl + T. Select appropreate choice such as Method... or type met to filter. It will show a panel Extract Method. Select Visibility, Public, Protected or Private. Type a Name. It will create a method and replace the original with a new method name.
ctrl + T and select Rename. It will show a panel at the bottom to show all occurences. Click Do Refactor to complete.
Refactor to create a method. Move a cursor to the new method and ctrl + T, select Pull Members Up. And confirm Pull up members of ... to: BaseController. Then click Refactor to move the method to the parent controller.
- Rename a class
ctrl + T > Rename. This will change the file name automatically as well.
- Extract an interface, have the class implement that interface.
ctrl + T > Interface. This will display Extract Interface From Class ... Type Interface Nmae, Namespace and select Members to form interface. Click Refactor. This will add comments at the top of the file.
To modify the comments, cmd + , > file template > PHP Interface, delete #parse("PHP File Header.php").
<?php
#if (${NAMESPACE})
namespace ${NAMESPACE};
#end
interface ${NAME} {
}
PHPStorm implements the class with that interface.
Move a cursor to a line or string, then ctrl + T > Variable..., select a variable from pop-up and type a Name in Introduce variable pop-up.
Move a cursor to a string, ctrl + T > Inline...> Ok.
Note: Use Live Template
cmd + N > Constructor... > type the name of class Store in () and it will suggest classes. Give it a name.
function __construct(\Illuminate\Session\Store $session)
A cursor on $session and opt + enter to pop-up Initialize fields and Ok. It will add the following.
/**
* some doc block
* /
private $session;
..
{
$this->session = $session;
}
A cursor on a class name \Illuminate\Session\Store, opt + enter and select Import class. This will add use statement at the top and replace the class and update doc block.
In preferences, search import and find Auto Import. Tick Enable auto-import in namespace scope.
cmd + N > Constructor, type Store in () and enter. It will add use statement.
shift shift > live template, add a new one. Abbreviation _c, Description: constructor. Template text:
public function __construct($ARGS$)
{
$ENDS$
}
Applicable to PHP.
cmd + N > Constructor, type Store in () and enter. Escape first then type $session. cmd + enter select Initialize fields and click Ok.
This is an helper file for Laravel 5, to provide autocomplete information to your IDE.
Add a pre-generated file to the root folder of your Laravel project (but this isn't as up-to-date as self generated files).). Add this file name to .gitignore.
Generated version: https://gist.github.com/barryvdh/5227822
You can change the keymap for Select Next Occurrrence from ctrl + G to ctrl + D as SublimeText.(I'm not changing it.)
To select all occurences, ctrl + cmd + G on a word.
Create a keymap for Split Vertically ctrl + V and Split Horizontally ctrl + H.
cmd + W to close a window.
In Preferences > plugins, click Browse Repositories and search vim and install IdeaVim.
After installation, change keymap opt + cmd + V to ctrl + cmd + V to enable vim. Or go to Tools > Vim Emulator to enable vim.
Create .ideavimrc file for PhpStorm vim.
Install xdebug through homebrew or pecl.
// homebrew
brew search xdebug
brew install php55-xdebug
// pecl
pecl install xdebug
//php --ini // this does not work. This will give you a wrong php.ini file.
Check phpinfo.php to find the Loaded Configuration File. My case is /etc/php.ini.
Add the following at the end of php.ini and restart the server sudo apachectl restart. And check the phpinfo.php again.
[xdebug]
zend_extension="/usr/local/Cellar/php55/5.5.18/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="~/xdebug_profiler_output"
xdebug.idekey=PHPSTORM
Important: The Tables of Content are generated. Any change will be overridden on the next update.
For more information: GitHub Wikifier