Tinker with your local/remote PHP (Laravel, Magento) Code
Tags: php, magento, laravel, tinkerwell
Published: 2021-06-17 21:08:46

---
title: Tinker with your local/remote PHP (Laravel, Magento) Code
published: true
description: Tinkerwell: Tinker with your local/remote PHP, Laravel & Magento 2 Code
canonical_url: https://blog.magepsycho.com/tinkerwell-tinker-with-your-local-remote-php-magento-2-code/
tags: #php, #magento, #laravel, #tinkerwell
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9sbeuq0gxp1xefq8u61.png
---
I was always looking for a [quick playground for testing/debugging](https://blog.magepsycho.com/sandbox-script-quick-testing-magento2/) any PHP application esp. for Magento 2.

Luckily, I got to know about Tinkerwell App in some twitter feed and thought of giving a try.
{% twitter 1234485852463603712 %}

If you don’t know about Tinerwell app
> Tinkerwell is the magical code editor that runs your code within local and remote PHP applications. In other words, it’s a RELP(read-eval-print loop) for PHP.

Though there are some tools like:  
* PHP’s interactive mode in CLI (`php -a`),
* [psysh](https://psysh.org/)
* n98-magerun’s [dev:console](https://n98-magerun.readthedocs.io/en/latest/commands/dev.html#dev-console)

But the main advantage of the Tinkerwell app over others is that it can tinker locally and also remotely(via SSH). 
Also, it has official IDE plugins so that you can run code directly from your favorite code editor(VSCode, Sublime Text 3 and PhpStorm).

## Installation

Tinkerwell is a commercial app that only costs around 15 USD and really worth it.

After purchasing, you will get an email with a link to download the app along with the license key.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sd7fpx0ued40npsrbh6t.png)

After downloading you can simply install the installer file and configure the License Key, so nothing fancy about it.

## Configuring for Magento 2
Currently(as the time of writing), the major PHP applications supported by Tinkerwell app are:

* Magento 2
* Laravel
* Symfony
* WordPress
* Drupal
* Typo3
* Prestashop

The full list can be found at – https://github.com/tinkerwellapp/drivers 

*Tinkerwell “drivers” determine how the application should be bootstrapped – and can even provide variables that should be available automatically.*

Since Magento 2 is supported by default, you just need to set the working directory in local or remote.

### Tinkering with Magento 2 Locally
Open the app and click on the folder icon (1) and set your local Magento 2 working directory(2). That’s it.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z2ml930vv6s2mu1qq6oh.png)

Now, you can run/debug any Magento 2 code (core & custom) with the realtime preview on the right pane. For example, it may look like

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vsfpf1rzq2axmhat41s.png)
<figcaption>Running code with Tinkerwell</figcaption>  

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mtjw3bb1x9z02755so6z.png)
<figcaption>Running selected code in PHPStorm with Tinkerwell</figcaption>

*`$objectManager` variable is available by default (via Magento 2 driver)*

#### Troubleshooting
**Problem:** If you are getting an error
> Zend_Db_Adapter_Exception with message ‘SQLSTATE[HY000] [2002] No such file or directory’

**Solution:** Just replace ‘localhost’ by the IP address(127.0.0.1) for DB host in the file `app/etc/env.php`

### Tinkering with Magento 2 Remotely (via SSH)
For remote interactive debugging, you can connect via Action (1) > Connect Via SSH. You will see a similar popup as below:

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9jglei5iuak5txscz1z2.png)
Just fill-up the SSH login details and connect(2). Now you are able to able to run the code in remote. 

## Conclusion
Though there are some alternatives, Tinkerwell works quite well locally and remotely for testing out any PHP code (not only limited to Laravel, Magento 2 or other PHP frameworks).
It’s really quite helpful in quick testing/debugging any PHP code and saves a lot of time.

You might be interested in following Twitter discussion:
{% twitter 1249921026063872001 %}