تحديد نطاق array_map php
سؤال
مرحبًا ، أستخدم Array_Map من وقت لآخر لكتابة طرق العودية. علي سبيل المثال
function stripSlashesRecursive( $value ){
$value = is_array($value) ?
array_map( 'stripSlashesRecursive', $value) :
stripslashes( $value );
return $value;
}
سؤال:
لنفترض أنني أريد أن أضع هذه الوظيفة في فئة ثابتة ، كيف يمكنني استخدام Array_map مرة أخرى إلى نطاق الطريقة الثابتة في الفصل مثل Sanitize :: StripslashesRecursive () ؛ أنا متأكد من أن هذا بسيط ولكني لا أستطيع أن أتصور ، نظرت إلى php.net أيضًا.
المحلول
عند استخدام طريقة الفصل كإجراء رد اتصال لوظائف مثل array_map()
و usort()
, ، يجب عليك إرسال رد الاتصال كصفعة ذات قيمة. القيمة الثانية هي دائمًا اسم الطريقة كسلسلة. القيمة الأولى هي السياق (اسم الفئة أو كائن)
// Static outside of class context
array_map( array( 'ClassName', 'methodName' ), $array );
// Static inside class context
array_map( array( __CLASS__, 'methodName' ), $array );
// Non-static outside of object context
array_map( array( $object, 'methodName' ), $array );
// Non-static inside of object context
array_map( array( $this, 'methodName' ), $array );
نصائح أخرى
array_map
يأخذ أتصل مرة أخرى كمعلمة لها الأولى.
ويتم كتابة رد اتصال إلى طريقة ثابتة مثل هذا:
array('classname', 'methodname')
مما يعني أنه في حالتك المحددة ، كنت تستخدم:
array_map(array('stripSlashesRecursive', ''), $value);
لمزيد من المعلومات حول عمليات الاسترجاعات, ، انظر هذا القسم من دليل PHP: الأنواع الزائفة والمتغيرات المستخدمة في هذا الوثائق - رد الاتصال.
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...