چگونه فایل‌های کانفیگ حرفه‌ای در PHP بنویسیم؟

چگونه فایل‌های کانفیگ حرفه‌ای در PHP بنویسیم؟

یکسری تنظیمات اولیه در هر وب اپلیکیشنی وجود دارند که غالباً از آن‌ها تحت عنوان Config (کانفیگ یا پیکربندی) یاد می‌شود که از آن جمله می‌توان به مثلاً تنظیمات امکان منتشر شدن یا عدم انتشار کامنت‌ها در لحظهٔ کامنت‌گذاری، عنوان اصلی سایت، نام دیتابیس، نام کاربری و رمزعبور دیتابیس و … اشاره کرد به‌طوری‌که این تنظیمات صرفاً در یک فایل ذخیره شده و در جای‌جای سایت مورد استفاده قرار می‌گیرند و هر زمان که نیاز به تغییری داشته باشیم، فایل کانفیگ را آپدیت کرده و هر کجا که از آن کانفیگ‌ها استفاده کرده باشیم به‌روزرسانی خواهد شد. 

آنچه در این مقاله قصد داریم مورد بررسی قرار دهیم، بررسی رویکردی حرفه‌ای برای نوشتن فایل‌های کانفیگ است؛ رویکردی که بسیاری از فریمورک‌های PHP از آن برای پیکربندی وب‌اپلیکیشن ساخته شده با آن فریمورک استفاده می‌کنند. دولوپرهایی که با Pure PHP کدنویسی می‌کنند، کانفیگ دیتابیس خود را به‌صورت زیر مورد استفاده قرار می دهند:

<?php
$db_host = 'localhost';
$db_name = 'somedb';
$db_user = 'someuser';
$db_pass = 'somepass';

کدهای بالا در فایلی مثلاً تحت‌عنوان config.php ذخیره شده و با include کردن این فایل در هر صفحه‌ای که نیاز داشته باشیم، به تنظیمات دیتابیس دسترسی خواهیم داشت:

<?php
include('config.php');
echo $db_host; // 'localhost'

اما رویکردی که در فریمورک‌های حرفه‌ای نوشته شده برای زبان برنامه‌نویسی PHP مورد استفاده قرار گرفته است، استفاده از آرایه‌ها برای ذخیره‌سازی تنظیمات کانفیگ است:

<?php
return [
    'host' => 'localhost',
    'name' => 'somedb',
    'user' => 'someuser',
    'pass' => 'somepass'
];

آرایهٔ فوق را در فایلی تحت‌عنوان config.php ذخیره می‌سازیم؛ حال از این پس، به‌سادگی می‌توان این فایل را در متغیری ذخیره ساخته و همچون هر آرایهٔ دیگری به مقادیر آن دسترسی پیدا کرد:

<?php
$confing = include('config.php');
echo $confing['host']; // 'localhost'

نکتهٔ دیگری که در اینجا می‌بایست مدنظر داشته باشیم این است که کانفیگ مدنظر خود را به‌صورت آرایه‌های چندبعدی نیز می‌توان در فایل کانفیگ ذخیره ساخت؛ برای نمونه داریم:

<?php
return [
    'database' => [
        'host' => 'localhost',
        'name' => 'somedb',
        'user' => 'someuser',
        'pass' => 'somepass'
    ],
    'other-stuff' => ...
];

برای مثال اگر قصد داشته باشیم هاست دیتابیس را فراخوانی کنیم، به‌صورت زیر عمل می کنیم:

<?php
$confing = include('config.php');
echo $confing['database']['host']; // 'localhost'

باتوجه به این‌که فریمورک‌ها عموماً توسط حرفه‌ای‌ترین دولوپرهای آن زبان برنامه‌نویسی توسعه داده می‌شوند، اصطلاحاً Best Practiceها در آن‌ها رعایت شده و پیروی کردن از این رویکردهای کدنویسی می‌تواند در هرچه حرفه‌ای‌تر شدن ما نیز مفید باشند.



بهزاد مرادی