મુખ્ય સામગ્રીને બાયપાસ કરો

પ્લેગ્રાઉન્ડમાં PHP ફ્રેમવર્ક ચલાવો

વર્ડપ્રેસ પ્લેગ્રાઉન્ડ એક બ્રાઉઝર-આધારિત PHP રનટાઇમ (runtime) પણ છે. તે સૌથી વધુ વર્ડપ્રેસ જ શરૂ કરે છે, પરંતુ બ્લુપ્રિન્ટ (Blueprint) વર્ડપ્રેસનું ડાઉનલોડ છોડી શકે છે, વર્ચ્યુઅલ ફાઇલસિસ્ટમ (filesystem) માં કોઈપણ PHP ફાઇલો લખી શકે છે અને Symfony જેવું ફ્રેમવર્ક ચલાવી શકે છે.

આ માર્ગદર્શિકા એ સેટઅપનું સ્વરૂપ બતાવે છે. જ્યારે તમને શેર કરી શકાય તેવો ડેમો, દસ્તાવેજીકરણ માટેનું ઉદાહરણ, અથવા એવી PHP એપ માટે ઝડપી સુસંગતતા (compatibility) તપાસ જોઈતી હોય કે જેને સર્વર, ડેટાબેઝ, Node.js, Sass અથવા સ્થાનિક Composer ઇન્સ્ટોલની જરૂર ન હોય, ત્યારે તેનો ઉપયોગ કરો.

વર્ડપ્રેસ છોડો ત્યારે શું બદલાય છે​

બ્લુપ્રિન્ટમાં preferredVersions.wp ને false પર સેટ કરો, અથવા <php-snippet> પર wp="none" લખો. પ્લેગ્રાઉન્ડ તેમ છતાં PHP ડાઉનલોડ કરે છે, લખી શકાય તેવી ફાઇલસિસ્ટમ માઉન્ટ (mount) કરે છે, બ્લુપ્રિન્ટના સ્ટેપ્સ ચલાવે છે, અને features.networking true હોય ત્યારે નેટવર્કિંગને સપોર્ટ કરે છે. ફક્ત તે વર્ડપ્રેસ ડાઉનલોડ કે શરૂ કરતું નથી.

આના કારણે પ્લેગ્રાઉન્ડ સામાન્ય PHP ઉદાહરણો માટે ઉપયોગી બને છે:

  • એવી PHP લાઇબ્રેરીઓ જેને વાસ્તવિક ફાઇલસિસ્ટમની જરૂર હોય.
  • ફ્રેમવર્ક ડેમો જે public/index.php પાછળ ચાલી શકે.
  • દસ્તાવેજીકરણના સ્નિપેટ્સ (snippets) જે બ્રાઉઝરમાં ચાલવા જોઈએ.
  • એવા PHP કોડ માટે ફરીથી ચલાવી શકાય તેવા બગ રિપોર્ટ જે ફક્ત વર્ડપ્રેસ માટે નથી.

Symfony એપ અજમાવો​

નીચેનું ઉદાહરણ બ્લુપ્રિન્ટનો ઉપયોગ કરીને બંડલ કરેલી (bundled) Symfony એપને /app માં ડાઉનલોડ કરીને અનઝિપ (unzip) કરે છે. પછી <php-snippet> Symfony કર્નલ (kernel) શરૂ કરે છે અને ડેશબોર્ડ રૂટ (route) રેન્ડર કરે છે. એપની Composer ડિપેન્ડન્સીઝ (dependencies) માં વર્ડપ્રેસ HTML API શામેલ છે, તેથી સ્નિપેટ વર્ડપ્રેસ ઇન્સ્ટોલ કે શરૂ કર્યા વિના WP_HTML_Processor વડે <h1> વાંચી શકે છે.

અહીં સંપૂર્ણ એમ્બેડ (embed) કોડ છે:

<script type="module" src="https://playground.wordpress.net/php-code-snippet.js"></script>

<script id="symfony-blueprint" type="application/json">
{
"features": {
"networking": true
},
"steps": [
{
"step": "unzip",
"zipFile": {
"resource": "url",
"url": "https://wordpress.github.io/blueprints/blueprints/symfony-package-radar/symfony-package-radar.zip?v=wp-php-toolkit-html-2026-06-09"
},
"extractToPath": "/app"
}
]
}
</script>

<php-snippet name="run-symfony.php" wp="none" blueprint="symfony-blueprint">
<script type="application/x-php">
<?php
require '/app/symfony-package-radar/vendor/autoload.php';

use App\Kernel;
use Symfony\Component\HttpFoundation\Request;

$kernel = new Kernel( 'prod', false );
$request = Request::create( '/' );
$response = $kernel->handle( $request );

$page_title = get_first_h1_text( $response->getContent() );

echo 'HTTP ' . $response->getStatusCode() . PHP_EOL;
echo 'Symfony page: ' . $page_title . PHP_EOL;
echo 'WordPress installed: ';
echo file_exists( '/wordpress/wp-load.php' ) ? 'yes' : 'no';

$kernel->terminate( $request, $response );

/**
* The app's Composer dependencies include the WordPress HTML API, so the
* snippet can read the <h1> with WP_HTML_Processor without installing or
* booting WordPress.
*/
function get_first_h1_text( string $html ): string {
$processor = WP_HTML_Processor::create_fragment( $html );
if ( ! $processor->next_tag( 'H1' ) ) {
return 'unknown';
}

$text = '';
while ( $processor->next_token() ) {
if ( 'H1' === $processor->get_tag() && $processor->is_tag_closer() ) {
break;
}
if ( '#text' === $processor->get_token_type() ) {
$text .= $processor->get_modifiable_text();
}
}

return trim( $text );
}
</script>
<script type="text/expected-output">
HTTP 200
Symfony page: Symfony Playground
WordPress installed: no
</script>
</php-snippet>

આ જ એપ સંપૂર્ણ પ્લેગ્રાઉન્ડ પેજ તરીકે પણ ઉપલબ્ધ છે:

Symfony Package Radar ડેમો ખોલો

એપને ZIP તરીકે પેકેજ કરો​

ફ્રેમવર્ક ડેમો માટે, એવી ZIP પસંદ કરો જેમાં પહેલેથી vendor/ હોય. આનાથી પ્લેગ્રાઉન્ડ ઝડપથી શરૂ થાય છે, અને દરેક મુલાકાતીને Composer, Git અને પેકેજ રજિસ્ટ્રીના ડાઉનલોડની રાહ જોવી પડતી નથી. Symfony ડેમો આ જ રીતે Symfony અને Composer વડે ઇન્સ્ટોલ કરેલી વર્ડપ્રેસ HTML API ની નકલ બંનેને બંડલ કરે છે; તેમ છતાં તેમાં વર્ડપ્રેસ ઇન્સ્ટોલ શામેલ નથી.

સ્નિપેટ્સ અથવા CLI રન માટે, એક નાની બ્લુપ્રિન્ટ ફક્ત એક સ્ટેપમાં એપને /app માં ઇન્સ્ટોલ કરી શકે છે:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/symfony-package-radar/public/index.php",
"preferredVersions": {
"php": "8.4",
"wp": false
},
"features": {
"networking": true
},
"steps": [
{
"step": "unzip",
"zipFile": {
"resource": "bundled",
"path": "./symfony-package-radar.zip"
},
"extractToPath": "/app"
}
]
}

જ્યારે ZIP blueprint.json ની બાજુમાં જ હોય ત્યારે bundled રિસોર્સ વાપરો, અથવા ZIP અલગથી હોસ્ટ કરેલી હોય ત્યારે url રિસોર્સ વાપરો. પેકેજિંગની વિગતો માટે બ્લુપ્રિન્ટ બંડલ્સ જુઓ.

સંપૂર્ણ પેજવાળી પ્લેગ્રાઉન્ડ વેબસાઇટ માટે, ગેલેરી ડેમો જેવી બ્લુપ્રિન્ટ વાપરો. તે પ્લેગ્રાઉન્ડના ડોક્યુમેન્ટ રૂટ (document root) પર એક નાનું રાઉટર (router) ઉમેરે છે, જેથી Symfony ની public/ ડિરેક્ટરી બ્રાઉઝરની વિનંતીઓનો જવાબ આપી શકે.

ડેમોને બ્રાઉઝર-અનુકૂળ રાખો​

પ્લેગ્રાઉન્ડ પર ચાલતો ફ્રેમવર્ક ડેમો ત્યારે શ્રેષ્ઠ કામ કરે છે જ્યારે તે:

  • લાંબા સમય સુધી ચાલતી બેકગ્રાઉન્ડ પ્રક્રિયા (background process) ની જરૂર ન રાખે.
  • બનાવેલી ફાઇલો વર્ચ્યુઅલ ફાઇલસિસ્ટમમાં જ સાચવે.
  • PHP.wasm માં કમ્પાઇલ ન થયેલા નેટિવ એક્સ્ટેન્શન્સ (native extensions) ટાળે.
  • રનટાઇમ વખતે ફ્રન્ટએન્ડ બિલ્ડ સ્ટેપ્સ ટાળે.
  • નેટવર્ક કૉલ્સને વૈકલ્પિક અથવા મજબૂત (resilient) રાખે, કારણ કે ત્રીજા પક્ષની સેવાઓ માટે બ્રાઉઝરને CORS પ્રોક્સીની જરૂર પડી શકે છે.

આ મર્યાદાઓ પછી પણ વાસ્તવિક ફ્રેમવર્ક માટે ઘણી જગ્યા રહે છે: કંટ્રોલર્સ, રાઉટિંગ, ડિપેન્ડન્સી ઇન્જેક્શન (dependency injection), ટેમ્પ્લેટ્સ, ફોર્મ્સ, HTTP ક્લાયન્ટ્સ અને સાદી PHP લાઇબ્રેરીઓ — જ્યારે તેમની PHP ડિપેન્ડન્સીઝ ઉપલબ્ધ હોય ત્યારે આ બધું કામ કરે છે.