php לגשת לשיטה מחוץ לפונקציה (בתוך הקלאס)
-
@chagold כתב בphp לגשת לשיטה מחוץ לפונקציה (בתוך הקלאס):
בקישור הזה לא עשית שימוש בגלובל בתוך הפונקציה
ראה כאן:
https://onlinephp.io/c/ae84fב-stackoverflow
ראיתי פיתרון כזה:
https://onlinephp.io/c/c6d30 -
הפתרון הנכון הוא שימוש בuse:
function($v, $k) use($as) {
הנה דוגמא: https://onlinephp.io/c/0873e
מצאתי את זה ככה
גוגל: php lambda access parent scope variable
תוצאה: https://stackoverflow.com/a/15042216/1271037
תיעוד: https://www.php.net/manual/en/functions.anonymous.php -
@chagold כתב בphp לגשת לשיטה מחוץ לפונקציה (בתוך הקלאס):
במקרה הזה - לא הצלחתי - https://onlinephp.io/c/a0bde
מכיוון שהמשתנה
$as
זמין רק בתוך הפונקציהa
ולא במרחב הגלובלי, לפונקציהaaa
אין לכאורה גישה למרחב של הפונקציהa
-
@chagold כתב בphp לגשת לשיטה מחוץ לפונקציה (בתוך הקלאס):
איך אני יכול להריץ את הפונקציה עם ערכים מבחוץ ?
יש עוד דרך לגשת למשתנה מחוץ לסקופ (אבל... יותר מזעזע מההכרזה global , לפחות לדעתי...)
והיא על ידי המשתנהGLOBALS$
שהיא
" מערך אסוציאטיבי המכיל הפניות לכל המשתנים המוגדרים כעת בהיקף הגלובלי של הסקריפט. שמות המשתנים הם המפתחות של המערך."ככה
<?php $as = 'c'; $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]; $outputB = array_filter($arr, function ($v, $k) { return $k == $GLOBALS['as'] || $v == 4; }, ARRAY_FILTER_USE_BOTH); print_r($outputB);