سؤال

مرحبًا ، أستخدم 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) ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top