اذهب إلى المحتوى

السؤال

نشر

لدي متغيرات بيانات اعتماد قاعدة البيانات مخزنة في ملف منفصل يسمى config.php:

$db_server = 'localhost';
$db_user = 'username';
$db_password = 'secret';
$db_name = 'dbname';

بالإضافة إلى ذلك، لدي فئة PHP تقع في مجلد /class تسمى MysqlCrud.class.php والتي تتعامل مع عمليات CRUD بشكل مثالي:

class Database {

  private $db_host = 'localhost'; // Change as required
  private $db_user = 'username'; // Change as required
  private $db_pass = 'secret'; // Change as required
  private $db_name = 'dbname';  // Change as required

}

لكن أريد استخدام المتغيرات المركزية المحددة في config.php، لذلك، أضفت الأسطر التالية إلى فئة Database:

include('../config.php');
class Database {

  global $db_server;
  global $db_user;
  global $db_password;
  global $db_name;

  private $db_host = $db_server; // Change as required
  private $db_user = $db_user; // Change as required
  private $db_pass = $db_password; // Change as required
  private $db_name = $db_name;  // Change as required

}

لكن، حصلت على رسالة الخطأ التالية:

Parse error: syntax error, unexpected 'global' (T_GLOBAL), expecting function (T_FUNCTION) in /home/*** on line **

أجد صعوبة في فهم سبب عدم تمكني من الوصول إلى المتغيرات من ملف config.php داخل فئة Database. 

Recommended Posts

  • 0
نشر

المشكلة هنا أن كلمة "global" لا يمكن استخدامها داخل الفئات في PHP، لأن global تستخدم لجعل متغير متاح عالميا خارج الفئات.

الحل هو استدعاء متغيرات الاتصال بقاعدة البيانات من ملف config.php دون استخدام global:

1. استدعاء ملف config.php كما هو موجود الآن لتضمين المتغيرات:

include('../config.php'); 

2. استخدم المتغيرات مباشرة دون إضافة كلمة global:

class Database {

  private $db_host;  
  private $db_user;
  private $db_pass;
  private $db_name;

  public function __construct() {
    $this->db_host = $db_server;
    $this->db_user = $db_user;
    $this->db_pass = $db_password;
    $this->db_name = $db_name;
  }


}

بهذه الطريقة سيتم الوصول إلى المتغيرات المعرفة في ملف config.php داخل الفئة دون مشكلة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...