#REDIRECT [[Visual Studio]]
{{Infobox software
| name = PHP Tools for Visual Studio
| developer = [[DEVSENSE|DEVSENSE s.r.o.]]
| released = {{Start date and age|2012|03}}
| latest release version = 1.30.11199
| latest release date = {{Start date and age|2019|05|10}}
| status = Active
| programming language = [[C# (programming language)|C#]]
| operating system = [[Microsoft Windows]]
| language = English, Spanish, German and others (fr, ja, pt-br, ro, ru, tr, zh)
| license = [[Proprietary software|Proprietary]]
| website = {{URL|https://www.devsense.com}}
}}
'''PHP Tools for Visual Studio''' is a commercial extension for [[Microsoft Visual Studio]]<ref>https://visualstudiomagazine.com/articles/2017/08/23/php-tools.aspx</ref><ref>https://blogs.msdn.microsoft.com/vyvojari/2013/11/06/php-tools-for-visual-studio/</ref><ref>https://www.zive.cz/clanky/php-a-microsoft-velmi-dobra-kombinace/sc-3-a-180659/default.aspx</ref>, which adds the ability to work with [[PHP]] programming language. PHP Tools integration allows software developers to create and manage PHP projects ([[computer programs]], [[web sites]], [[web services]] and [[web apps]]), debug and maintain the source code.
==Features==
All of the features in Visual Studio can be used with PHP Tools, for instance:
* IntelliSense
* Navigation
* Code Formatting
* Syntax Highlighting
* Refactoring
* Debugging
===Code Editor===
PHP Tools includes a code editor that supports syntax highlighting and code completion to make the PHP code readable. The editor reuses other language editors from Visual Studio such as HTML, CSS, JavaScript.
The code editor makes use of PHP 5 and PHP 7 type hints and PHPDoc comments. Without specifying the type of information, it analyses values and expressions in order to estimate the resulting type. Then, based on the analysis, the app predicts when an expression will cause a run-time error. These errors usually indicate a typo, a missing use or an invalid missing namespace name in PHPDoc comment.
===Debugger===
The majority of features of the integrated debugger of Visual Studio are supported by PHP Tools. The debugger consists of two main components: the front-end component is the one responsible for visually communicating with the user, and the back-end component is hooked directly to the PHP core. PHP Tools for Visual Studio provides the front-end component and communicates with the back-end provided by the Xdebug extension. The communication uses the DBGp debugging protocol.
Equally as in Visual Studio<ref>https://docs.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2019#set-a-breakpoint-and-start-the-debugger</ref>, the debugger allows setting breakpoints to stop execution at a certain position in the code and watches which monitor values of variables when the program is paused. Breakpoints can be conditional, meaning that they broke the code when a given PHP expression is evaluated as true. Also, they can break when a given exception is thrown or by default, the program breaks when fatal error happens, that is, any exception that prevents the program from continuing.
Once broken into the debugger code, it can be executed one line at a time: this is called stepping. The step commands include Step Into, Step Over, and Step Out<ref>https://docs.microsoft.com/en-us/visualstudio/debugger/using-breakpoints?view=vs-2019</ref>. When the program is broken, if the mouse hovers over the variable, the current value is displayed in a tooltip, where it can be modified. The debugger allows developers to change the state of the executed program by editing the values of variables, so alternative execution paths can be examined.
PHP Tools also has a version for extending the free<ref>https://code.visualstudio.com/docs/supporting/faq#_is-vs-code-free</ref> [[Visual Studio Code]] (it's called PHP Tools for VS Code) for PHP language. This [[plugin]] allows editing, code validation, refactoring, debugging and testing, among others in Microsoft Visual Studio Code.
[[Category:Visual Studio extensions]]
[[Category:Integrated development environments]]
==References==
<!-- Inline citations added to your article will automatically display here. See https://en.wikipedia.org/wiki/WP:REFB for instructions on how to add citations. -->
{{reflist}}
|