هل يمكن تعريف المتغيرات العامة الافتراضية للفئة ديناميكيًا من مصفوفة في PHP؟
-
13-12-2019 - |
سؤال
لدي فئة حدث أستخدمها لإدراج/تحديث البيانات في قاعدة البيانات الخاصة بي.هل هناك طريقة يمكنني من خلالها إنشاء المتغيرات العامة من مجموعة db_fields الخاصة بي حتى لا أضطر إلى تكرار البيانات؟
هذا هو هيكلي الحالي الذي يعمل ...
class event{
protected static $table_name='tName';
protected static $db_fields = array('field1','field2','field3','field4','field5');
public $field1;
public $field2;
public $field3;
public $field4;
public $field5;
}
أود أن أحصل على شيء مثل هذا..
class event{
protected static $table_name='tName';
protected static $db_fields = array('field1','field2','field3','field4','field5');
function __construct() {
create_public_vars_here($db_fields);
}
}
شكرًا!
المحلول
يمكنك تجربة ما يلي:
giveacodicetagpre.نصائح أخرى
يمكنك استخدام المستوطنين / المستلمين السحريين:
class event{
protected static $table_name='tName';
protected static $db_fields = array('field1','field2','field3','field4','field5');
public function __get($key)
{
if(!in_array($key, static::$db_fields))
throw new Exception( $key . " doesn't exist.");
return $this -> $key;
}
public function __set($key, $value)
{
if(!in_array($key, static::$db_fields))
throw new Exception( $key . " doesn't exist.");
$this -> $key = $value;
}
}
بهذه الطريقة تكون متأكدًا من عدم الوصول إلى قيم خارج قائمتك:
$event -> field1 = 'hello'; // --> OK
$event -> field17 = 'hello'; // --> Exception: field17 doesn't exist
echo $event -> field1; // --> OK
echo $event -> field17; // --> Exception: field17 doesn't exist
أما بالنسبة لوجود إعلان متغير عام صريح في التعليمات البرمجية الخاصة بك، فلا حاجة لك طالما أنك لا تحتاج إلى التكرار على الكائنات الخاصة بك - ولكن في هذه الحالة عليك تنفيذ Iterator
واجهة تعتمد على مجالك الثابت.
استخدام mutators:
giveacodicetagpre.ثم يمكنك الوصول إليها مثل هذا:
giveacodicetagpre.أو، إذا كنت لا تنشئ كائنا من الفصل:
giveacodicetagpre.تحرير: بروح تعقيد الأشياء حتى لا يكون لديك انتهاك حدود، وأضاف الكود.