NetBeans PHP Code Completion for Standard Functions - php

I have started to use NetBeans 6.9.1 for developing PHP projects. Although it does provide code completion to certain extent, but it's by no means complete. For example, commonly used functions such as implode,explode are not in the list for code completion. Also, it would have been convenient to have code completion for objects made from built in classes, such as HttpRequest.
Is there anyway to obtain code completion for the items mentioned above.

Try this...
Tools->Options
Selct "Editor"
Select "Code completion"
In language drop down select "PHP"
You will see a list of code completion options for PHP project ONLY
If you have global variables/objects set "Code Completion for Variables" is set to "All Variables"
If you are using methods without static in front of them as static make sure under "Code Completing for Class Methods" you have "Also Non-Static Methods after ::"
If you are not using namespaces PHP 5.3, make sure you project is type is test to PHP 5.2/5.1. To check it, right click your project->Properties->Sources->PHP Version.

I checked the above thread and my project settings are correct, as are the PHP settings and plugins are enabled. Each PHP editor window shows and editable form, but there is no hints,completion or anything else that is helpful whilst writing code.
I figured it out in the end:
each PHP section started and ended as below:
<? ?>
should have been:
<?php ?>

tags are deprecated (since php 7.0+), but you can enable it in NetBeans if You're working with legacy code at:
Project Properties -> Sources
mark Option: Allow short tags, it is also possible to allows ASP tags <% %> there.

Related

VS Code suggestions for PHP show everything, instead of class functions only

I tried setting up VS Code for a legacy PHP project, to evaluate it against other IDEs.
My problem is with the suggestions I get, when I press <an object>->Ctrl+Space.
For example I want to get all suggestions (properties and functions) of a certain class. I am in the class and I type:
$this->(Ctrl+Space)
I get a large list of functions and constants, which are things I can use in PHP in general and not the functions and properties of the class I am in. After I installed the PHP Intelephense extension, I get the class methods that I need in my suggestions, but still they are mixed with everything else and hard to find, unless I start typing the first letters of the function I need to access. To show you what I mean, this is what I get, when I type the following within a function of my class:
I don't think this is a matter of extension, because even if I disable all my extensions I still get the whole bunch of suggestions. How can I remove all unnecessary suggestions, or at least give priority to the class specific suggestions and see them on top of the list?
You must disable the vscode built-in PHP Language Features.
Click extensions.
In the search bar type #builtin php.
Click cog icon of PHP Language Features.
Click Disable.
I've been struggling with this for while too ...
You can just disable the basic PHP suggestions by setting php.suggest.basic to false in your settings.json file or use the settings UI at PHP > Suggest: Basic
With Intelephense installed everything works as expected now !
source : https://code.visualstudio.com/docs/languages/php#_disable-builtin-php-support

Live templates in phpstorm - creates html tags instead of snippet

I'm trying to set up a simple snippet that writes out <?php ?> whenever i type php + TAB.
I set the context to be php files, but whenever I'm in a php file and write php + TAB it writes out <php></php>. So it seems that the HTML Zen Coding scheme is overriding my snippet. I use Zen coding a lot so I do not want to turn this off, but I would like my snippets to have higher priority. How can I fix this?
I did try to use the "apply now" button, as well as restarting PhpStorm.
I had set the context to be php, but unlike Sublime Text which simply looks at file-extensions to determine the context, PhpStorm looks whether I am actually within a php context. Since I am trying to write php tags I am most obviously not.
I changed the context to HTML and it solved the problem.

Can Dreamweaver show a list of variables, functions, class?

Is there a window in Dreamweaver that shows all variables and functions defined in the current document?
When you right click on the current document, you will see Functions context menu which contains the methods used.
Another trick is to edit the toolbars xml file and uncomment the code nav button.
This gives you a toolbar button you can click to list the methods, rather than right clicking and selecting functions from the context menu.
Still not as good as a permanently visible pane, but one less click than the right click > functions context menu.
Open this file:
C:\Program Files (x86)\Adobe\Adobe Dreamweaver CS5\configuration\Toolbars\toolbars.xml
Uncomment this block:
<menubutton id="DW_CodeNav"
image="Toolbars/images/MM/codenav.png"
MMString:tooltip="DW_CodeNav/menubutton/tooltip"
enabled="dw.getFocus() == 'textView' || dw.getFocus() == 'html'"
menuID="DWCodeNavPopup"
update="onViewChange"/>
Restart Dreamweaver for the changes to be applied.
Code Nav icon "{}" appears at the end of the Document toolbar. The toolbar with (code|split|design).
No, Dreamweaver, at least through CS5, does not have a window that lists variables and functions in the document. The CS5 code hinting engine is pretty good, so it should at least allow you to quickly type your code, but if you need a list outside of the document itself, there is no such thing.
There used to be an extension that would list functions defined in the page in a floating panel, Interakt's MX Code Pack, but it is no longer available as Interakt was acquired by Adobe, and their products subsequently "retired":
MX Coder Pack
This is an old topic but I thought I would update it since I submitted a feature request to Adobe to implement an "outline view" which would address OP's original question. The feature would list functions inside of a page similar to how other IDE tools like Eclipse do it. Dreamweaver currently does this for JavaScript functions only but this feature request would enable it for other types of pages as well (cfml, php, asp) and also let you see the DOM outline for any page.
Feel free to submit your request to Adobe here: https://www.adobe.com/cfusion/mmform/index.cfm?name=wishform&loc=en
Be sure to reference enhancement request #3812052. If enough people ask for this feature, perhaps Adobe will listen.
I have no sulution for the variables, but for functions I use a little trick:
I do a search (ctrl+f) for the string "function " and the press "find all" this'll show the result window with all lines with "function "in it. Double clicking a line in the result window will take your to the appropriate function.
You can make something with regular expression where you search for function ({some chars}){ to be absolutely certain to only get function declarations.
You can then save this query and load it as needed.
Indeed code hinting is the only way I've been able to view a functions list in CS5. The HOTKEY for code hinting is ctrl+spacebar.

How to make phpDoc comments visible in Eclipse

I wonder how I can make PHPDoc-comments visible in Eclipse on a project-wide basis. For the moment, it only works in the current, open file.
It would be super to be able to check out all the #params and descriptions that I have put in before each function, outside the function's own file.
Thanks a lot!
If you have already documented your code elements via docblocks, then when you use those elements in your code, the hover popups feature of Eclipse will indeed show you what's in their docblocks. This doesn't require you to have the other file open, e.g. writing code in test.php that uses class Foo from foo.php... you're not required to have foo.php open in the editor in order for your Foo object in test.php to have hover popup docblock info visible.
If such hover popups are not showing docblock info to you, then you might need to revisit your buildpath/includepath settings in your PHP project, particularly if the elements you're trying to use are actually defined in another project than the one you're working in.

Any netbeans features that will make my day?

I've recently gotten quite fond of netbeans for my php work because of the XDebug integration. It has made me all but forget about textmate (which imho still beats netbeans for the little things)
What do you think is the one awesome netbeans feature I should know about, and more importantly why and how do I use it?
I'm asking this to optimize my skills in the use of the IDE and based on the idea that what works well for others might just work for me (and hopefully others).
I've found another great snip of genius i wanted to share:
you can do custom code folding (not really related to php, just netbeans)
just put this into a code file:
// <editor-fold defaultstate="collapsed" desc="getters and setters">
some boring code you don't need to see every time here
// </editor-fold>
That'll behave similar to #regions in visual studio or pragma marks in xcode. but unlike regions, it doesn't screw up the working of your code, it's really just a comment!
The Subversion Integration directly on the IDE and the Local History are of my must-use, favorite features.
I find the single most useful feature in Netbeans for PHP work is that it understands PHPDoc (in the same way that it understands Javadoc), and uses it for type hinting.
Type /** before a function definition, hit return and it'll create a PHPDoc template.
/** <-- I typed this one line
* #param <type> $otherObj <-- Netbeans added these 3 lines
* #return <type> <--
*/ <--
public function exampleFunction($otherObj)
{
$myObj = new MyClass($otherObj);
return $myObj;
}
Replace the <type> placemarkers with the appropriate types:
/**
* #param OtherClass $otherObj
* #return MyClass
*/
public function exampleFunction($otherObj)
{
$myObj = new MyClass($otherObj);
return $myObj;
}
And voila, you'll get type completion (and pop-up documentation) with Ctrl-space.
Awesome Vi bindings via the jVi plugin.
if ($x instanceof SomeClass) {
$x->.... // now it has code completion with SomeClass' methods.
}
Macros, and Code Templates with advanced input !
Parametrized code templates (try typing fnc in netbeans and then imediately press Tab, and then keep pressing Tab to see what happens, how it cycles through the function name and the function parameters - look inside the code template to see how this is done).
(Options > Editor > Code Templates )
Some easy examples (some I made, some come with netbeans):
[forek] expands to: [foreach ($array as $key => $value) { }] (This one comes with netbeans, the rest I made)
[arr] + Tab expands to: [array();]
[kv] +Tab expands to: ['key' => "val", ] (key and val are parameters that I canc cycle through and edit with tab. The code template looks like this: ['${key}' => "${val}", ] where [${something}] is a template parameter, it prints [something]. if you want it tio print [$something] I think you have to use three ]$] characters: [$$${key}])
EDIT: You can make a code template for the arrow with a single letter (like 'm' for ex) , but when you type in code you have to put a space before the letter, else it wont recognize it. Ex: $obj m[press Tab], expands to [$obj ->]. The space inbetween works ok and is not a sintax error.
/EDIT
Every time I wish there was a template for something, I actually insert the template and then use it imediately and continue with the rest of the php programming.
Macros with shortcuts as mini code templates ! (Netbeans >Menu > Edit >Start / Stop Macro Recording)
Best Macros I made for php are actually Code Templates (because ' + Tab doesnt work as code template for some reason, only if the template begins with a letter it works) ([shortcut] inserts [text]):
shortcut [Ctrl + ;] inserts [->] (no more
keybooard gymnastics, no more dot
sintax envy on other languages :))
shortcut [Ctrl + Shift + ;] inserts [ => ]
This link has a lot of keyboard shortcuts that comes in handy. I have a copy of it printed out and pinned to the wall next to my computer. Sadly, I don't see any special PHP shortcuts though.
UPDATE: http://netbeans.org/project_downloads/usersguide/shortcuts60.pdf
UPDATE2: http://netbeans.org/project_downloads/www/shortcuts.pdf (for 7.0)
I would add Tasks integration. Don't have time to finalize something? Add a simple task which NetBeans will track for you. You can customize what gets tracked in Tasks in Options -> Miscellaneous -> Tasks, but I found the format below to be most useful, as it aligns well with PHPDoc comments (see therefromhere's comment):
/**
* #todo Create public setters and __toString() for this class.
*/
Ctrl + Space is my favorite and most used feature when programming in java, I think it is enabled for PHP as well. But if you like net beans you most likely know about it already, if not try it out discover what it does.
Also navigating to the relevant source code by Ctrl + Clicking on anything from variables, to method calls, to class references is a nice feature.
Additionally, the popup menus that are displayed when right clicking in source code contain many useful tools for everything from refactoring to code generation.
This is going to sound ridiculously trivial, but one thing I do in Netbeans is code formatting. Its code formatting (source->format) rocks.
Its SVN integration is great too, but that's already been said.
The ability to create quick on the fly macros.
For example , here is one that will put a semi-colon at the end of the current line and places your cursor back where it was before the macro started.
";" delete-previous caret-end-line ";" jump-list-last-edit jump-list-last-edit
(I know this is present in other language implementations by default. But it does not work by default in PHP Netbeans.)
As someone who tends to stick with IDE for a long time, I love being able to customize little things to make me more efficient.
If you consider Netbeans 6.7 it has a sync feature a bit like Dreamweaver
In the way that you can add a custom ftp, import it to the project and when you save the files locally they are also uploaded to the server so you have a semi backup system in place.
(trust me it's better than working directly onto a ftp tree and realizing that the transfer failed somehow between the current tmp file and the server file and you lost your work because you closed the file window :) )
NetBeans also allows you to completely undock individual windows.
How to:
Right-click on toolbar of the window which you want to move and select Undock window. The selected window becomes a floating one, which allows you to move it outside of the main NetBeans window.
Highlights:
you can pin floating windows to screen borders or to different floating windows (just the ones from NetBeans though)
floating windows can make themselves semitransparent if you move away from them (configurable via main settings in Miscellaneous/Appearance)
if you move a different application over any floating windows, they come back on top after you start using NetBeans again
your workspace layout is remembered, so all floating windows keep their respective positions between individual coding sessions (NetBeans restarts)
This is useful especially if you have a second monitor, as it allows you to maximize the space available for source code by moving any supplementary windows (the file browser, unit test results, etc) away from the main screen. The nice thing is that NetBeans works around most annoyances which are usually present in multi-window applications (e.g. different applications covering individual toolbars in GIMP).
Note: perhaps this is commonly known feature, but I managed to discover it just today. It wasn't on the list yet, so I added it even though I already answered with a different feature some time ago.
Squiglies under unused private class members.
maybe the search box, to find anything in the source code`?
Some features definitely worth looking out for, including the ones mentioned above:
Version control Integration, including Local History
IDE wide search box
Integration with Tomcat/Apache, GlassFish can be helpful when you are looking to work with PHP and other server side technologies, like JSP
Very good integration with MySQL- essential to wAMP/LAMP development
TextMate is a great slick little editor I use all the time on my Mac, but not an IDE. I haven't enjoyed Netbeans on Mac very much being so non-native, but on Windows or Linux I prefer it over Eclipse.
The Swing GUI designer with Java has been huge in getting projects done rapidly.
Other people have said it, but integrated Subversion is awesome. If I've been working with a project from the terminal in Linux it figures out I've got SVN checked out on that directory and handles it fine.
I love the code formatting (right click in the editor), especially when team members write poorly spaced/indented code with nano, xemacs, or something like that.
its amazing that no one has talked about this cool plugin.
http://code.google.com/p/zen-coding/
I have found it very useful for html. PHP developers do need it. It adds a lot of templates like this.
download zen-coding for netbeans and import zip file in tools>options>code templates>import.
I like this the most: phpunit + code coverage
I've personally used Eclipse a couple of years ago for Java development, and ever since i knew Netbeans at version 3.5, it has gotten really good with the integration of server technologies as TomCat for J2EE application deployment, subversion, uml and plenty of plug-ins for different tecnologies, not just java now.
Database integration (MySQL, Jdb, SQL editor).
Continuous progress in PHP integration and features.
Subversion integration...it does help A LOT!
Code indent, custom color highlighting.
If you are a PHP developer, Ruby on Rails integration can be of help too, if you want to expand your expertise on web apps.
Netbeans has always been known for delivering support for experimental (not-yet-released) technologies, such as Java 6 EE preview, JDK7 support, ...
And, subversion support out-of-the box. It's a great difference to Eclipse, where you have to use plug-ins. With Eclipse I had only problems under Linux (JavaHL problems, blabla...). I don't remember who said it, or where it is written, but "out-of-the-box support is much more relevant to a user than the ability to use some plug-ins".

Categories