# SDK/Tools > Symcon documentation · English · generated on 2026-09-26 > Index: https://www.symcon.de/en/llms.txt Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/ The SDK is used to develop own modules and to be able to integrate them via the "Module Control". The developed modules can be made available to other users. ### SDK __Version 3.0 and above__ [SDK for Excel](sdk-tools.md) [SDK for Skins](sdk-tools.md) __Version 4.0 and above__ [SDK for PHP](sdk-tools/sdk-php.md) ### Tools [Guid Generator](sdk-tools.md) [Module Generator](sdk-tools.md) [Module Validator](sdk-tools.md) [Network-Configuration-Tool](sdk-tools.md) [Recoverytool](sdk-tools.md) [Visual Studio Code](sdk-tools.md) [AI Agents (llms.txt)](sdk-tools.md) ## AI Agents Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/ai-agents/ The complete documentation is additionally available as Markdown optimized for AI agents and Large Language Models (LLMs), e.g. Claude, ChatGPT, Cursor or GitHub Copilot. The files are automatically regenerated on every update of the website and are therefore always up to date with this documentation. In contrast to the HTML page or the PDF, the files contain only the content without any layout. Therefore, they require significantly fewer tokens and can be processed faster by AI agents. ### Structure The files follow the [llms.txt](https://llmstxt.org) standard: | File | Description | | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [llms.txt](https://www.symcon.de/en/llms.txt) | Index of all files with a short description and approximate size in tokens. The entry point for AI agents. | | [llms/function-index.md](https://www.symcon.de/en/llms/function-index.md) | All functions (command reference and module functions) with signature and short description, each with a link to the file containing parameters and examples. | | llms/modules/*.md | One file per module, e.g. [enocean.md](https://www.symcon.de/en/llms/modules/enocean.md) or [knx.md](https://www.symcon.de/en/llms/modules/knx.md), including the module functions. | | llms/functions/*.md | The command reference, one file per group, e.g. [management-variables.md](https://www.symcon.de/en/llms/functions/management-variables.md). | | [llms-full.txt](https://www.symcon.de/en/llms-full.txt) | The complete documentation in a single file, e.g. for uploading into a knowledge base. | The file names are identical in all languages. The German version is available at /de/llms.txt. ### Usage Most AI agents can fetch the files directly. It is sufficient to tell the agent the address of the index, e.g. in the CLAUDE.md or AGENTS.md file of your module project: ```php The Symcon documentation for AI agents is available at https://www.symcon.de/en/llms.txt. For PHP functions, load https://www.symcon.de/en/llms/function-index.md first. ``` Alternatively, the file llms-full.txt can be uploaded as a knowledge base into a project (e.g. Claude Projects or NotebookLM). ### Files - Start here - [Function Index](../function-index.md) - [Getting Started](../getting-started.md) - [System Requirements](../getting-started/system-requirements.md) - [Migrationen](../getting-started/migrationen.md) - [Procedures](../how-to.md) - [Basics](../concepts.md) - [Automations](../concepts/automations.md) - Components - [Components – Overview](../components/index.md) - [Remote Access](../components/remote-access.md) - [Tray](../components/tray.md) - [Service](../components/service.md) - [Management Console](../components/management-console.md) - [Tile Visualization](../components/tile-visualization.md) - [WebFront Visualization](../components/webfront-visualization.md) - [Object Presentation](../components/object-presentation.md) - [Icons](../components/icons.md) - Command Reference - [Command Reference – Overview](../functions/index.md) - [Process Control](../functions/process-control.md) - [Management of Events](../functions/management-events.md) - [Management of Instances](../functions/management-instances.md) - [Management of Categories](../functions/management-categories.md) - [Management of Links](../functions/management-links.md) - [Management of Media](../functions/management-media.md) - [Management of Modules](../functions/management-modules.md) - [Management of Objects](../functions/management-objects.md) - [Program Information](../functions/program-information.md) - [Management of Scripts](../functions/management-scripts.md) - [Management of Variables](../functions/management-variables.md) - [Accessing Variables](../functions/access-variables.md) - Developer Area - [Developer Area – Overview](index.md) - [Data Exchange](data-exchange.md) - [Download (Archive)](download-archive.md) - [Compatibilityfunctions](compatibility-functions.md) - [Limitations](limitations.md) - [Mirroring](mirroring.md) - [SDK/Tools](sdk-tools.md) - [SDK (PHP)](sdk-tools/sdk-php.md) - [Configuration Forms](sdk-tools/sdk-php/configuration-forms.md) - [Module](sdk-tools/sdk-php/module.md) - [Special Switches](special-switches.md) - Module Reference - [Module Reference – Overview](../modules/index.md) - Module Reference: Devices - [1-Wire](../modules/1-wire.md) - [ABL](../modules/abl.md) - [Alfen](../modules/alfen.md) - [ALLNET](../modules/allnet.md) - [BACnet](../modules/bacnet.md) - [Catan](../modules/catan.md) - [digitalSTROM](../modules/digitalstrom.md) - [DMX / ArtNet](../modules/dmx-artnet.md) - [EgiGeoZone](../modules/egigeozone.md) - [ekey](../modules/ekey.md) - [ekey bionyx](../modules/ekeybionyx.md) - [EnOcean](../modules/enocean.md) - [FHZ1X00PC](../modules/fhz1x00pc.md) - [FS10 Weather](../modules/fs10-weather.md) - [GARDENA smart system](../modules/gardena-smart-system.md) - [Geofency](../modules/geofency.md) - [Heating Control](../modules/heating-control.md) - [Home Connect](../modules/home-connect.md) - [HomeMatic](../modules/homematic.md) - [Image Grabber](../modules/image-grabber.md) - [IPS-868](../modules/ips-868.md) - [IR Trans](../modules/irtrans.md) - [KEBA](../modules/keba.md) - [KNX](../modules/knx.md) - [LCN](../modules/lcn.md) - [LJQuick](../modules/ljquick.md) - [Matter](../modules/matter.md) - [M-Bus](../modules/mbus.md) - [Mennekes](../modules/mennekes.md) - [Modbus RTU/TCP](../modules/modbus-rtu-tcp.md) - [Möhlenhoff Alpha 2](../modules/moehlenhoff-alpha-2.md) - [MQTT](../modules/mqtt.md) - [NEA Smart](../modules/nea-smart.md) - [OCPP](../modules/ocpp.md) - [OPC UA](../modules/opc-ua.md) - [SageGlass (BACnet)](../modules/sageglass-bacnet.md) - [Shutter Control](../modules/shutter-control.md) - [Siemens OZW](../modules/siemens-ozw.md) - [SNMP](../modules/snmp.md) - [Snom](../modules/snom.md) - [PLC: Siemens, Vipa, Logo](../modules/sps-siemens-vipa-logo.md) - [PLC: Wago, Beckhoff, ABB](../modules/sps-wago-beckhoff-abb.md) - [Sync Remote](../modules/sync-remote.md) - [Technische Alternative](../modules/technische-alternative.md) - [Door Intercom](../modules/door-intercom.md) - [Voice over IP](../modules/voip.md) - [Weishaupt](../modules/weishaupt.md) - [WinLIRC](../modules/winlirc.md) - [Wireless M-Bus](../modules/wireless-m-bus.md) - [WMRS200](../modules/wmrs200.md) - [W&T](../modules/wut.md) - [XBee](../modules/xbee.md) - [Eaton xComfort](../modules/xcomfort.md) - [Z-Wave](../modules/z-wave.md) - [Zevvy](../modules/zevvy.md) - Module Reference: Logic - [Active List](../modules/active-list.md) - [Presence Simulation](../modules/presence-simulation.md) - [Image Archive](../modules/image-archive.md) - [Countdown](../modules/countdown.md) - [CSV ZIP Export](../modules/csv-zip-export.md) - [Dummy Module](../modules/dummy-module.md) - [Egg Timer](../modules/egg-timer.md) - [Group Control](../modules/group-control.md) - [JSON Decoder](../modules/json-decoder.md) - [JSON Exporter](../modules/json-exporter.md) - [Logic Gate](../modules/logic-gate.md) - [Computation Module](../modules/computation-module.md) - [RGBMultiplexer](../modules/rgbmultiplexer.md) - [DragPointer](../modules/dragpointer.md) - [Game Collection](../modules/game-collection.md) - [Scene Control](../modules/scene-control.md) - [Dew Point Temperature Calculation](../modules/dew-point-temperature-calculation.md) - [Staircase Light Controls](../modules/staircase-light-controls.md) - [Renamer](../modules/renamer.md) - [Rain Central](../modules/rain-central.md) - [Variable Comparison](../modules/variable-comparison.md) - [Virtuelle Devices](../modules/virtuelle-devices.md) - [Random Lighting](../modules/random-lighting.md) - Module Reference: Energy - [Work Efficiency](../modules/work-efficiency.md) - [Operating Hours Counter](../modules/operating-hours-counter.md) - [Energy Dashboard](../modules/energy-dashboard.md) - [Energy Manager](../modules/energy-manager.md) - [Energy Distribution](../modules/energy-distribution.md) - [Energy Counter](../modules/energy-counter.md) - [Power Billing Module](../modules/power-billing-module.md) - [Power price](../modules/power-price.md) - [Consumption per Category](../modules/consumption-per-category.md) - [Consumption within Timespan](../modules/consumption-within-timespan.md) - [Consumption Behaviour](../modules/consumption-behaviour.md) - [Calculated Counter](../modules/calculated-counter.md) - [Virtual Counter](../modules/virtual-counter.md) - [Reading (Day)](../modules/reading-day.md) - [Meter Overflow](../modules/meter-overflow.md) - Module Reference: Visualizations - [Tile Visualization](../modules/tile-visualization.md) - [WebFront Visualization](../modules/webfront-visualization.md) - Module Reference: Voice assistents - [Amazon Alexa](../modules/amazon-alexa.md) - [Google Assistant](../modules/google-assistant.md) - Module Reference: Notifications - [Alerting](../modules/alerting.md) - [Notification](../modules/notification.md) - [Announcement](../modules/announcement.md) - [Dynamic Mail](../modules/dynamic-mail.md) - [Done Notifier](../modules/done-notifier.md) - [IMAP](../modules/imap.md) - [MediaPlayer](../modules/mediaplayer.md) - [POP3](../modules/pop3.md) - [Popup Module](../modules/popup-module.md) - [SMS](../modules/sms.md) - [SMTP](../modules/smtp.md) - [Spotify](../modules/spotify.md) - [Fault Manager](../modules/fault-manager.md) - [SymconReport](../modules/symconreport.md) - [Phone Announcement](../modules/phone-announcement.md) - [Phone Chain](../modules/phone-chain.md) - [TelegramBot](../modules/telegrambot.md) - [Text to Speech](../modules/text-to-speech.md) - [TTSAWSPolly](../modules/ttsawspolly.md) - [Consumption Alert](../modules/consumption-alert.md) - [Water Alert](../modules/water-alert.md) - [Watchdog](../modules/watchdog.md) - Module Reference: Core Instances - [Archive Control](../modules/archive-control.md) - [Permission Control](../modules/permission-control.md) - [Calendar Control](../modules/calendar-control.md) - [Connect Control](../modules/connect-control.md) - [Cutter](../modules/cutter.md) - [DNS-SD Control](../modules/dns-sd-control.md) - [Event Control](../modules/event-control.md) - [Location Control](../modules/location-control.md) - [Module Control](../modules/module-control.md) - [Notification Control](../modules/notification-control.md) - [Presence Control](../modules/presence-control.md) - [RegisterVariable](../modules/registervariable.md) - [Skin Control](../modules/skin-control.md) - [SSDP Control](../modules/ssdp-control.md) - [System Information](../modules/system-information.md) - [Tailscale VPN](../modules/tailscale-vpn.md) - [TextParser](../modules/textparser.md) - [Translation Control](../modules/translation-control.md) - [Util Control](../modules/util-control.md) - [WebHook Control](../modules/webhook-control.md) - [WebServer](../modules/webserver.md) - Module Reference: I/O Instances - [Client Socket](../modules/clientsocket.md) - [HID](../modules/hid.md) - [HTTP Client](../modules/httpclient.md) - [Multicast Socket](../modules/multicastsocket.md) - [Serial Port](../modules/serialport.md) - [Server Sent Event Client](../modules/serversenteventclient.md) - [Server Socket](../modules/serversocket.md) - [UDP Socket](../modules/udpsocket.md) - [Virtual I/O](../modules/virtualio.md) - [WebSocket Client](../modules/websocketclient.md) - Module Reference: Backups - [Backup](../modules/backup.md) - Module Reference: Legacy - [RRDTool](../modules/rrdtool.md) - [Shutter Control (legacy)](../modules/shutter-control-legacy.md) - [USBMapper](../modules/usbmapper.md) - [Web Graph](../modules/web-graph.md) - [Wunderground Weather](../modules/wunderground-weather.md) ## SDK (Excel) Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/sdk-excel/ _Requires Symcon >= 3.0_ ### Description Since IP-Symcon 3.0, IP-Symcon supports the JSON-RPC interface and thus the database can easily be read into Microsoft Excel. ### Requirements IP-Symcon 3.0 or above Microsoft Excel or similar with Visual Basic for Applications support "Visual Basic for Applications" experience (optional) [Download the prepared Excel file](https://www.symcon.de/assets/files/service/SDK-Excel.zip) ### Setup in Microsoft Excel The downloaded file must be unzipped and opened in Excel. #### Opening the file for the first time When the file is opened for the first time, two warnings appear, which must be clicked through and allowed. First warning: ![Protected View](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/95f2d6733b-1790424938/sdkexcel-redwarning.png) If you click on the text of the message, "Enable Editing" must be selected. This is a standard security measure because the file contains scripts. Then either a popup or a yellow security warning appears, both of which warn of the macros contained. These must be activated to ensure functionality. Either click "Activate macros" in the popup or "Enable Content" in the yellow message. ![Security Warning](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/410e9585dc-1790424938/sdkexcel-yellowwarning.png) #### Configure Access The connection to the IPS database can be tested in the "Configuration" tab. Make sure that [Remote Access](../components/remote-access.md) is activated. ![Configuration](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/38f21efe41-1790424938/sdkexcel-config.png) Server, user name and remote access password can be specified in the configuration table. Complete URLs or IP addresses can be entered for servers. When using IP addresses, make sure that this is specified in the format "http://192.168.1.1:3777". The remote access password and user name are only required if the data is not being accessed locally (127.0.0.1). The connection is established via "Test Connection" and the InstanceID of the archive is read out. #### Read Raw Data The raw data of a variable can be read out in the "Raw Data" tab. These are then put out line by line accompanied by date and value. ![Raw Data](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/9704aaf56b-1790424938/sdkexcel-rawdata.png) The VariableID must be entered. The start and end time can be 0 and therefore do not set any limits. Limit sets the maximum number of data records that should be read. Due to the system, however, there is a limit of 10,000 datasets. The data is read in via "Fetch Data" and entered in the table. The most recent dataset appears first. #### Read Aggregation The third tab contains the "Aggregation". The VariableID, start/end time and the limit are required again. In addition, the aggregation can be selected. With the values 0-6 you can choose from minutely up to annually accurate aggregation. ![Aggregation](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/d4e3d492fe-1790424938/sdkexcel-aggregated.png) The data is read in via "Fetch Data" and entered in the table. An average as well as minima and maxima within an aggregation are put out. ### Visual Basic for Applications and the Configuration In order to manage or change the scripts and macros that enable reading, the developer tools need to be activated in the Quick Bar. This can easily be selected via "Right-click->File->Customize ribbon". Here, simply the activation of the "Developer" menu is required. ![Developer Tools](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/98e6e038c6-1790424938/sdkexcel-optiontoolbar.png) Once activated, you will find the "Visual Basic" button under this menu item, which will take you to the Developer Area. It looks like this: ![Visual Basic](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/76b72503f4-1790424938/sdkexcel-visualbasic.png) Here the required scripts can be adapted and used to further process IP-Symcon’s data. These scripts also contain the logic for establishing a connection to IP-Symcon, as well as the JSON-RPC interface required for this. ## SDK (Skins) (deprecated) Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/sdk-skins/ _Requires Symcon >= 3.0_ > **Warning:** Skins are only available for the WebFront. Since version 7.0, there has been the [Tile Visualization](../components/tile-visualization.md), whose [design](../components/tile-visualization.md) can be changed directly in the visualization for both web and apps. ### Description Since version 3.0, individual skins can be created. The creation and change of icons is quick and easy, but if complete changes to the style are to be made, additional knowledge of CSS is required. > **Note:** This only works for the WebFront. If a skin or adaptation of the mobile apps is desired, this can be implemented via the Enterprise program. > Further information can be found under [Products for companies](https://www.symcon.de/en/product/corporation/) and an [individual branding](https://www.symcon.de/en/contact-us/#Individual%20branding) can be requested via direct contact. ### Requirements IP-Symcon 3.0 or above CSS knowledge (if more than the icons are to be changed) Download [sample skin](https://codeload.github.com/symcon/SkinTemplate/zip/refs/heads/master) to have a basic structure (recommended) ### Folder structure ![Structure of the skin folder](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-skins/fbc9a6cc3f-1790424938/sdkskins-struktur.png) ```php Skinname | - icons (optional) | | | - Aircraft.png | | | - Bird.png | - img (optional) | | | - Background.png | - font (optional) | | | - WebFont.ttf | - skin.json (will be generated) | - webfront.css (required, even if empty) | - icons.css (will be generated) | - README.md (optional) ``` ### Icons-Folder Icons includes all icons. If there are standard icons with the same name, the custom icons will be preferred. * Contains all icons in PNG format and size 32x32. * Icon names may only consist of letters, numbers, minus (-) and underscore (_). Spaces, umlauts and special characters are not permitted. * The icons must all start with capital letters (e.g. Arrow.png, Right.png) * In the case of word chains, it is recommended that these are also written with a capital letter (e.g. ArrowRight.png). This is for better readability and consistency with the IP-Symcon icons. * If an icon has the same name as one of the IP-Symcon icons, the custom icon is preferred in the WebFront. The upper and lower case letters are to be observed. (This function is an elegant way of effortlessly equipping a third-party WebFront with a skin.) ### Image-Folder Img contains additional graphics for e.g. possible backgrounds. * Contains additional images, e.g. for special backgrounds ### Font-Folder Contains the fonts required for the skin. * Contains other WebFonts * The CSS elements of the WebFont should be added in the webfront.css ### Individual files Files which are in the main folder. #### skin.json * Meta file that is automatically created by the skin builder. The fields Author, Version, URL, GIT and Compatible may be changed after creation. The URL should be the address for the skin topic in the forum. GIT should be the address for the GitHub repository so that the skin control can download updates accordingly. The icon array is created automatically and is used by the WebFront editor as an aid to make the custom icons selectable. Compatible must have the value 1. This is strictly checked so that changes to the WebFront, which make the skins incompatible, can be deactivated. #### webfront.css * CSS file containing changes to the WebFront CSS style. Must be present. Can also be empty. * CSS changes must comply with the above rules. #### icons.css * CSS file that contains the links to the custom icons. * Is generated automatically by the skin builder and should not be changed. #### README.md Readme which GitHub automatically displays in the browser in the repository overview. Can be used for documentation. ### Skin Builder * The skin manager is called with http//host:port/skins/. (Example: http://localhost:3777/skins/) * As soon as a skin has been selected, the icons currently available in the CSS/meta file are displayed. * If new icons have been added/removed, a "Build Skin!" must be executed so that the icons.css/skin.json are regenerated accordingly. No action is required when changing the icons themselves or the webfront.css. The browser cache may have to be cleared so that changes can be seen. > **Note:** Up to version 4.4 the skin manager could be found under http//host:port/user/skins/. (Example: http://localhost:3777/user/skins/) ### Provide skins * Skins can be uploaded to GitHub. * The GitHub repository name should match the name of the skin. * The repository should only contain the necessary files such as icons.css, skin.json, webfront.css and optional folders such as icons, font or img. A README.md and a LICENSE file are also recommended. The files must not be nested in an additional subfolder, otherwise the installer will not work correctly. * When publishing, the additional size (number in kB/mB) the skin requires when loading must be specified. (This will be displayed after the build process) ### Install skins This works via [Skin-Control](../modules/skin-control.md) and is described there. ### Select skins In the [WebFront](../components/webfront-visualization.md) configurator there is a "Skin" field under the [Presentation](../components/webfront-visualization.md) tab, in which the skin can be selected. ## Tools Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/ ### Network-Configuration-Tool All IPS gateways in the network can be found with the network-configuration-tool. Instructions for use can be found [HERE](https://www.symcon.de/assets/files/service/NetworkConfigurationTool.pdf) . [To download](https://support.symcon.de/lan-gct) ### Recoverytool The recovery tool can write an image to the SymBox. Instructions for use can be found [HERE](https://www.symcon.de/assets/files/product/symbox-en.pdf) under point "5.2. Recovery using the recovery tool ". [To download](https://www.symcon.de/en/downloads/#symbox) ### Module development The following tools are helpful in developing modules for the [Module Store](../components/management-console.md) and help to successfully [submit them](sdk-tools/sdk-php.md). ### GUID Generator The [GUID Generator](sdk-tools.md) generates a GUID in the correct format for the module. ### Module Generator The [Module Generator](sdk-tools.md) is a wizard which helps to create the basic structure for a module and sets up all the basic facilities for a functioning data flow. ### Module Validator The [Module Validator](sdk-tools.md) checks the developed files for correct syntax and whether all required information is included. ### External IDEs External IDEs can insert and display function declarations. #### Visual Studio Code Instructions for generating and using in Visual Studio Code can be found [HERE](sdk-tools.md). ## GUID generator Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/guid-generator/ _Interactive tool, only available on the website: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/guid-generator/_ ## Module Generator Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/module-generator/ > **Note:** For use in Visual Studio Code, it is recommended to use the Symcon Module Helper extension from pitti instead of this tool. More information can be found [here](https://community.symcon.de/t/symcon-modul-helfer-eine-vs-code-extension-fuer-modul-entwickler-ehem-forminator/141324) . _Interactive tool, only available on the website: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/module-generator/_ ## Module Validator Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/module-validator/ ## Visual Studio Code Source: https://www.symcon.de/en/service/documentation/developer-area/sdk-tools/tools/visual-studio-code/ VisualStudioCode has some useful extensions for module development. ### Install Extension for IP-Symcon A function list has been created in this extension to display it in the source code. #### Marketplace Call up this [Link to Marketplace](https://marketplace.visualstudio.com/items?itemName=symcongmbh.vscode-symcon-stubs) and click on "Install". #### Extension browser in VSC * Call up "Extensions" * Search for "Symcon" * Select the "Extension for IP-Symcon" and click on "Install" to install it * In the Extensions area under "Installed" -> "Extension for IP-Symcon" should now appear ![Configuration of PhpStorm](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/tools/visual-studio-code/86c401e09e-1790424938/tools-vsc-extension.png) ### Download PHP PHP is required for the extensions "CS Fixer" and "PHPUnit". Here is a [link to download](https://www.php.net/downloads.php) PHP. PHP 8 or higher is recommended. * Call up "Settings" by clicking on the cogwheel (Manage). * Select "PHP" under "Extensions". * There is the item "PHP > Validate: Executable Path" where the "settings.json" can be called. * The path to php.exe is now specified after "php.validate.executablePath". The "\" must be escaped with a second "\". ```php "php.validate.executablePath": "Path\\To\\php.exe" ``` ### Install CS Fixer Needed are: * The PHAR file, which can be downloaded from [this link](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) . Version 3 is supported with PHP 8. * A .style folder. It is recommended to include this [Repository](https://github.com/symcon/StylePHP) as a submodule in the own repository * The extension to use cs-fixer in Visual Studio Code, which can be downloaded from the [Marketplace](https://marketplace.visualstudio.com/items?itemName=junstyle.php-cs-fixer) or subsequently embed directly into Visual Studio Code #### Extension browser in VSC * Call up "Extensions" * Search for "php cs fixer". * Select the "php cs fixer" from junstyle and install it by clicking on "Install". * The extensions area should now appear under "Installed" -> "php cs fixer". #### Configure CS Fixer * Call up "Settings" by clicking on the cogwheel (Manage) * Select "PHP CS Fixer" under "Extensions" * The item "Allow Risky" is set to true * Under the item "PHP-cs-fixer: Executable Path" specifies the path to "php-cs-fixer.phar". Alternatively, these settings can be entered in "settings.json". ```php "php-cs-fixer.executablePath": "Path\\To\\php-cs-fixer-v3.phar", "php-cs-fixer.allowRisky": true ``` #### Use CS Fixer If everything is correctly integrated and set up, the extension can be used. Either by right-clicking in the file to be formatted and selecting Format Document or by pressing the shortcut "Shift+Alt+F". If the entire project should adopt the style, the following command can be entered via the command line. ```php php "Path\\To\\php-cs-fixer-v3.phar" fix --config=.style/.php_cs -v --allow-risky=yes ``` ### Install PHP Unit Needed are: * PHPUnit's PHAR file, which can be downloaded from [this link](https://phpunit.de/getting-started/phpunit-9.html) . * A test to run * The extension to use PHPUnit in Visual Studio, which can be downloaded from the [Marketplace](https://marketplace.visualstudio.com/items?itemName=recca0120.vscode-phpunit) or subsequently embed directly into Visual Studio Code #### Extension browser in VSC * Call up "Extensions" * Search for "PHPUnit". * Select the "PHPUnit Test Explorer" and install it by clicking on "Install". * The extensions area should now appear under "Installed" -> "PHPUnit Test Explorer" and "Test Explorer UI". #### Configure PHP Unit * Call up "Settings" by clicking on the cogwheel (Manage) * Select "PHPUnit configuration" under "Extensions". * At the item "Phpunit: Files" is entered "{test,tests}/**/*Test.php". * Under the point "Phpunit: PHP" the path to PHP.exe is entered. * At the item "Phpunit: Phpunit" the path to the Phpunit Phar file is entered * Therefore, under "Phpunit: Args" ["--configuration", "tests/phpunit.xml"] must be entered. Alternatively, these settings can be entered in "settings.json". ```php "phpunit.phpunit": "Path\\To\\phpunit-9.5.10.phar", "phpunit.args": [ "--configuration", "tests/phpunit.xml" ], "phpunit.php": "Path\\To\\php.exe", "phpunit.files": "{test,tests}/**/*Test.php", ``` Now PHPUnit can be used. However, errors can still occur. So the following error can appear: ```php "PHPUnit requires the "mbstring" extension." ``` * Navigate to the folder where "php.exe" is located * Look for the "php.ini" file in this folder. If it doesn't exist, search for "php.ini-development" and rename it * Open the "php.ini" file in any text editor * Search for "mbstring" in the "Dynamic Extensions" section * Remove the semicolon in front of "extension=mbstring". * Save file * Close and reopen Visual Studio Code Now, another error may occur: ```php PHP Warning: PHP Startup: Unable to load dynamic library 'mbstring' (tried: C:\php\ext\mbstring (Das angegebene Modul wurde nicht gefunden.), ) C:\php\ext\php_mbstring.dll (Das angegebene Modul wurde nicht gefunden.) in Unknown on line 0 ``` * Navigate to the folder where "php.exe" is located * Look for the "php.ini" file in this folder. If it doesn't exist, search for "php.ini-development" and rename it * Open the "php.ini" file in any text editor * Look for "extension_dir" in the "Paths and Directories" section * Remove the semicolon in front of "extension_dir = "ext"" which is under "On windows:". * Save file * Close and reopen Visual Studio Code #### Use PHPUnit Two buttons should now appear above the function with the test. The test is started by clicking on Run. ![PhpUnit](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/tools/visual-studio-code/11ac28fda9-1790424938/tools-vsc-phpUnit.png)