Skip to content

Instantly share code, notes, and snippets.

@hugodias
Created November 20, 2013 13:55
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save hugodias/7563544 to your computer and use it in GitHub Desktop.
Save hugodias/7563544 to your computer and use it in GitHub Desktop.
Configure PhpStorm to play nicely with CakePHP
Wednesday, August 24, 2011
Configure PhpStorm to Auto-complete CakePHP Models, Views, and Controllers
After playing around a bit today I finally figured out how to get PhpStorm to auto-complete methods for models and controllers. Here's what you need to do.
Removing Multiple Definitions
First, let's tackle the multiple definitions problem that we see below.
Multiple Definitions
There are multiple places defining AppController. We need to remove the ones that are included in the following locations from our 'Directories' in the project's settings.
The two locations are:
$CAKEHOME/cake/console
$CAKEHOME/cake/tests
Exclude Directories
Next we need to mark the following file as plain text.
$CAKEHOME/cake/libs/controllers/app_controller.php
Mark as Plain Text
You should now see that PhpStorm is no longer complaining about multiple definitions. If it is you may want to check your plugins/components to see if they're mucking it up. If they are, just mark the file with the definition as plain text.
Multiple Definitions Resolved
Auto-completion should now work for the controller. However, it's still not working correctly on our model.
Autocomplete works, but not on the model.
Adding the Model
To fix the model we need to add a magic property to the class.
/**
*@property ModelName $ModelName
*/
Here's an example from the controller we've been working in.
@property ModelName $ModelName
We can now auto-complete on our models in the controller.
Auto-complete on the model.
Defining Model Relationships
Lastly, we need to add magic properties to our models to define its relationships with other models. Basically, for each "belongs to" relationship defined in the model's file you need to add the magic property comment.
Define belongs to relationships
We can now auto-complete these relationships.
Auto-complete model relationships
Setting Up Helper Auto-completion in Views
To get auto-completion working in views we need to include a file created by junichi11 over at GitHub.
Download this file and save it in a directory somewhere outside of your current project. I did this so I could use the same file on multiple projects.
CakePHP Helper Code Completion
Now add that directory to your current project.
Open a view file and add the following variable definition.
/**
*@var $this View
*/
You should now be able to auto-complete helpers in your view!
Auto-completion of helpers
Core Component Auto-Completion
Add the following to your app_controller.php file and this will add component auto-completion.
/**
* CakePHP Component & Model Code Completion
* @author junichi11
*
* ==============================================
* CakePHP Core Components
* ==============================================
* @property AuthComponent $Auth
* @property AclComponent $Acl
* @property CookieComponent $Cookie
* @property EmailComponent $Email
* @property RequestHandlerComponent $RequestHandler
* @property SecurityComponent $Security
* @property SessionComponent $Session
*/
@vhsanche
Copy link

vhsanche commented Mar 1, 2015

Hey Hugo, thanks for the cakephp configuration example. I have a quick question. Do you know how to get debugging with xdebug in cakephp and phpstorm?

@intrepido
Copy link

@vhsanche I have the same question, you already know how?

@cesarkohl
Copy link

@vhsanche and @intrepido I know how to do it, feel free to contact me.

@dereuromark
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment