چگونه فایل‌های کانفیگ اصولی در 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 نیز در آن‌ها رعایت شده و پیروی کردن از این رویکردهای کدنویسی می‌تواند در هرچه حرفه‌ای‌تر شدن ما نیز مفید باشند (در پایان، چنانچه علاقمند به فراگیری گام به گام زبان برنامه‌نویسی PHP هستید، می‌توانید به دورهٔ آموزش PHP در سکان آکادمی مراجعه نمایید.)



بهزاد مرادی