Laravel's collections are awesome!
This project provides a "jsfiddle" style environment to test, run & share collection code.
The playground uses pib to evaluate PHP code directly inside the browser.
When you load the playground, Vue downloads a compiled web assembly build of PHP. This is used by they playground to
locally eval your code as you type.
The disadvantages of this approach are the limited browser support - for it to work you need to be running a desktop version of Chrome or Firefox that is recent. Safari & Edge aren't support at the moment. See this issue for more information.
The playground is built as a PWA, which provides several advantages.
- Caching of downloaded PHP binary (no need to re-download the binary on each page load)
- Support for using offline (since the code is eval'd locally, it will work without any internet)
api
contains the lambda function that is used to save playground as github gists, so they can be saved & shared.php-app
contain a small PHP application that is used to evaluate the collection code, catch errors and return it back to the client as json.php-src
contains the scripts to build the in web assembly build, containing PHP + thephp-app
code.playground
contains the Vue application which communicates with PHP to run your code, and display the results
php php-app/create-phar.php php-src/app.phar # create the phar containing the PHP code
cd php-src # Swtich to the pib dir
docker run --rm -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash build.sh # Build PHP
cp php-7.3.6/php.wasm php-7.3.6/php.js php-7.3.6/php.data ../playground/public # Copy the compiled files into the playground
cd playground
yarn # Install deps
yarn serve # Development
yarn build # Production build to `dist` folder
PRs are welcome! Feel free to improve the documentation, fix bugs and help make the playground better! Issues are welcome as well if you find a bug or improvement.
The Laravel Collections documentation.
Adam Wathan has a great course, Refactoring to Collections which provides tons of content on refactoring your Laravel to take advantage of collections.
The in-browser PHP evaluation uses PHP in Browser by oraoto