هل يمكن تخزين المصفوفات في الثوابت في PHP؟ مشكلة مع define() و const
مرحباً بالجميع! أنا مطور PHP مبتدئ، وقد واجهت مشكلة مع الثوابت.
أحتاج إلى إنشاء ثابت يحتوي على مصفوفة بإعدادات الاتصال بقاعدة البيانات وقائمة عناوين IP المسموح بها. سابقاً كنت أستخدم `define()` للنصوص والأرقام البسيطة، وكان كل شيء يعمل بشكل رائع. لكن عندما حاولت تمرير مصفوفة إلى `define()`، أظهر PHP خطأ: "Constants may only evaluate to scalar values or arrays".
جربت طريقتين:
1. عبر `define()`:
```php
define('DB_CONFIG', [
'host' => 'localhost',
'port' => 3306,
'user' => 'admin',
'pass' => 'secret'
]);
// خطأ: Constants may only evaluate to scalar values
```
2. عبر الكلمة المفتاحية `const`:
```php
class Config {
const ALLOWED_IPS = ['192.168.1.1', '10.0.0.1', '127.0.0.1'];
}
// يعمل، لكن ليس في النطاق العام
```
قرأت الوثائق ولاحظت أن PHP 5.6 أضاف دعم المصفوفات في الثوابت، لكن لدي PHP 7.4 وما زالت المشكلة تحدث.