PHP में फाइलों पर आधारित इंजन

हम एक साइट इंजन लागू करेंगे जो हमें एक टेम्पलेट फाइल बनाने की अनुमति देगा, जिसमें URL के आधार पर विभिन्न कंटेंट जोड़े जाएंगे।

मान लें कि हमारे पेज की संरचना निम्नलिखित प्रकार से दिखाई देती है:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>title</title>
  </head>
  <body>
    <header>
      header
    </header>
    <main>
      content
    </main>
    <header>
      footer
    </header>
  </body>
</html>

आइए उस स्थान पर, जहां कंटेंट डाला जाना है, हमारे द्वारा बनाए गए किसी आदेश को डालें, उदाहरण के लिए इस प्रकार: {{ content }}। आइए अपनी साइट का टेम्पलेट बदलें:

layout.php<!DOCTYPE html>
<html>
  <head>
    <title>title</title>
  </head>
  <body>
    <header>
      header
    </header>
    <main>
      {{ content }}
    </main>
    <header>
      footer
    </header>
  </body>
</html>

अब एक view फोल्डर बनाएं, जिसमें हम कंटेंट फाइलें रखेंगे। सीधे इसी फोल्डर में या उप-फोल्डरों में।

पहली फाइल इस प्रकार होगी:

view/page1.php<div>
  content 1
</div>

दूसरी फाइल इस प्रकार होगी:

view/dir/page2.php<div>
  content 2
</div>

तीसरी फाइल इस प्रकार होगी:

view/dir/sub/page3.php<div>
  content 3
</div>

आइए अब ऐसा करें कि एड्रेस बार के URL के अनुसार संबंधित फाइल लोड हो। हमारे मामले में, URL /page1 पर पहली फाइल, URL /dir/page2 पर - दूसरी, और URL /dir/sub/page3 पर - तीसरी फाइल होगी।

आइए लागू करना शुरू करें। सबसे पहले .htaccess फाइल में ऐसा करें कि संसाधन फाइलों के अलावा सभी अनुरोधित पते index.php पेज पर रीडायरेक्ट हो जाएं:

.htaccessRewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php

index.php पेज पर एक वेरिएबल में अनुरोधित URL प्राप्त करेंगे:

index.php<?php
  $url = $_SERVER['REQUEST_URI'];
?>

फिर टेम्पलेट फाइल का टेक्स्ट प्राप्त करेंगे:

index.php<?php
  $layout = file_get_contents('layout.php');
?>

अब URL के आधार पर view फोल्डर से संबंधित कंटेंट फाइल प्राप्त करेंगे:

index.php<?php
  $content = file_get_contents('view' . $url . '.php');
?>

टेम्पलेट के टेक्स्ट में हमारे द्वारा बनाए गए आदेश को फाइल से प्राप्त कंटेंट से बदलेंगे:

index.php<?php
  $layout = str_replace('{{ content }}', $content, $layout);
?>

ब्राउज़र में डाले गए कंटेंट के साथ टेम्पलेट फाइल प्रदर्शित करेंगे:

index.php<?php
  echo $layout;
?>

सब कुछ एक साथ रखें और निम्नलिखित कोड प्राप्त करें:

index.php<?php
  $url = $_SERVER['REQUEST_URI'];
  
  $layout  = file_get_contents('layout.php');
  $content = file_get_contents('view' . $url . '.php');
  
  $layout = str_replace('{{ content }}', $content, $layout);
  
  echo $layout;
?>
Задание 1

फाइलों पर आधारित वर्णित इंजन को लागू करें।