Kodokon kodokon.com

अपने कोड को व्यवस्थित करना: include, संरचना, कॉन्स्टेंट

अपनी साइट को include और require के साथ पुनः प्रयोग योग्य फ़ाइलों में विभाजित करें, एक स्पष्ट प्रोजेक्ट संरचना, और केंद्रीकृत कॉन्स्टेंट।

7 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

जैसे ही आपकी साइट दो पेजों से आगे बढ़ती है, हर फ़ाइल में हेडर, फ़ुटर और फ़ंक्शन की नकल करना असंभव-सा हो जाता है। PHP चार समावेशन कथन प्रदान करता है: include, require, और उनके include_once / require_once रूप। ये सभी कॉल के स्थान पर किसी फ़ाइल की सामग्री सम्मिलित कर देते हैं; अंतर त्रुटि प्रबंधन और बार-बार समावेशन में है। _once रूप पहले से लोड की गई फ़ाइलों का हिसाब रखते हैं और उन्हें केवल एक बार शामिल करते हैं - फ़ंक्शन फ़ाइलों के लिए आवश्यक, जिन्हें दोबारा घोषित नहीं किया जा सकता।

PHP
<?php

declare(strict_types=1);

function e(string $value): string
{
    return htmlspecialchars($value, ENT_QUOTES);
}

function formatPrice(float $amount): string
{
    return number_format($amount, 2, '.', ',') . ' €';
}
src/functions.php: पूरी साइट में पुनः प्रयोग योग्य सहायक।

एक स्पष्ट प्रोजेक्ट संरचना हज़ार टिप्पणियों के बराबर होती है। एक सामान्य परंपरा: public/ में ब्राउज़र को परोसे जाने वाले पेज होते हैं (यह एकमात्र उजागर फ़ोल्डर है), src/ कॉन्फ़िगरेशन और फ़ंक्शन इकट्ठा करता है, templates/ में पेज के टुकड़े होते हैं (header.php, footer.php)। PHP का अंतर्निहित डेवलपमेंट सर्वर public/ की ओर इंगित करके शुरू किया जाता है।

BASH
mkdir -p my-site/public my-site/src
mkdir -p my-site/templates
cd my-site
php -S localhost:8000 -t public
संरचना बनाना, फिर डेवलपमेंट सर्वर शुरू करना।

प्रोजेक्ट की स्थिर वैल्यू (साइट का नाम, पथ, सेटिंग्स) वेरिएबल के बजाय कॉन्स्टेंट के योग्य हैं: इन्हें गलती से अधिलेखित नहीं किया जा सकता। const कंपाइल समय पर हल होता है, define() रनटाइम पर; व्यवहार में, अपनी कॉन्फ़िगरेशन फ़ाइलों में const को प्राथमिकता दें। पथों के लिए, हमेशा __DIR__ का उपसर्ग लगाएँ, जो वर्तमान फ़ाइल का फ़ोल्डर है: आपके समावेशन तब काम करेंगे चाहे स्क्रिप्ट कहीं से भी शुरू की जाए।

PHP
<?php

declare(strict_types=1);

const SITE_NAME = 'La Bonne Pizza';
const ITEMS_PER_PAGE = 12;
const UPLOAD_DIR = __DIR__ . '/../public/uploads';

define('BASE_URL', 'http://localhost:8000');
src/config.php: सारी कॉन्फ़िगरेशन एक ही जगह पर।

फिर हर पेज एक छोटी असेंबली बन जाता है: require से कॉन्फ़िगरेशन और फ़ंक्शन लोड करें, फिर विशिष्ट सामग्री के चारों ओर टेम्पलेट शामिल करें।

HTML
<?php
require __DIR__ . '/../src/config.php';
require_once __DIR__ . '/../src/functions.php';

$pageTitle = SITE_NAME . ' - Home';
include __DIR__ . '/../templates/header.php';
?>
<main>
  <h1><?= e($pageTitle) ?></h1>
  <p>Pizza of the day: <?= formatPrice(9.5) ?></p>
</main>
<?php include __DIR__ . '/../templates/footer.php'; ?>
public/index.php: अब पेज केवल एक असेंबली है।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. include और require में क्या अंतर है?
    • include, require से तेज़ है
    • require केवल निरपेक्ष पथों के साथ काम करता है
    • यदि फ़ाइल गायब हो तो require स्क्रिप्ट को एक घातक त्रुटि के साथ रोक देता है, include एक चेतावनी देकर जारी रहता है
    • कोई नहीं, ये दो उपनाम हैं
  2. require_once किसलिए है?
    • यह सुनिश्चित करने के लिए कि एक फ़ाइल केवल एक बार शामिल हो, भले ही कई फ़ाइलें उसका अनुरोध करें
    • किसी फ़ाइल को केवल प्रोडक्शन में शामिल करने के लिए
    • किसी फ़ाइल को उसके PHP कोड को निष्पादित किए बिना शामिल करने के लिए
  3. समावेशन पथों में __DIR__ का उपसर्ग क्यों लगाएँ?
    • यह PHP 8 से अनिवार्य है
    • पथ वर्तमान फ़ाइल के सापेक्ष हो जाता है और अब इस पर निर्भर नहीं करता कि स्क्रिप्ट किस फ़ोल्डर से शुरू की गई है
    • यह शामिल की गई फ़ाइलों का कैश सक्षम करता है