Php pass metode sebagai panggilan balik

Kita bisa membuat variabel global baru. Ini terlalu jelek. Kita dapat menulis ulang atau membuat subkelas dari kelas Yii. Tapi ini hanya menciptakan banyak pekerjaan dan kemungkinan pemeliharaan di masa depan

Tidak, jawabannya sebenarnya sangat sederhana. Yang harus kita lakukan adalah meneruskan nilai tambahan di luar lingkup anonim dengan direktif use

Ini adalah kutipan dari Yii2 GridView di mana saya mendeklarasikan tindakan untuk tombol "Hapus". Line 6 adalah tempat ActionColumn akan meneruskan variabel $url, $model dan $key ke fungsi callback


    [
        'class' => yii\grid\ActionColumn::class,
        'template' => '{delete}',
        'buttons' => [
            'delete' => function($url, $model, $key) {
                return Html::a(FAS::icon(FAS::_TRASH),
                    $url,
                    [
                        'data-action' => 'delete',
                        'data-confirm-string' => 'Are you sure you want to remove this User Group?',
                        'data-request' => $url,
                        'data-pjax-container' => '#user-group-assignment-grid',
                        'class' => 'user-group-assignment-action',
                    ]);
            },
        ],
    ],

Alih-alih menetapkan nilai

// Set pjax container id
$pjaxContainer = 'user-group-assignment-grid';

    ...

    // Define ActionColumn within GridView
    [
        'class' => yii\grid\ActionColumn::class,
        'template' => '{delete}',
        'buttons' => [
            'delete' => function($url, $model, $key) use ($pjaxContainer) {
                return Html::a(FAS::icon(FAS::_TRASH),
                    $url,
                    [
                        'data-action' => 'delete',
                        'data-confirm-string' => 'Are you sure you want to remove this User Group?',
                        'data-request' => $url,
                        'data-pjax-container' => '#' . $pjaxContainer,
                        'class' => 'user-group-assignment-action',
                    ]);
            },
        ],
    ],

_0 dalam fungsi panggilan balik (
// Set pjax container id
$pjaxContainer = 'user-group-assignment-grid';

    ...

    // Define ActionColumn within GridView
    [
        'class' => yii\grid\ActionColumn::class,
        'template' => '{delete}',
        'buttons' => [
            'delete' => function($url, $model, $key) use ($pjaxContainer) {
                return Html::a(FAS::icon(FAS::_TRASH),
                    $url,
                    [
                        'data-action' => 'delete',
                        'data-confirm-string' => 'Are you sure you want to remove this User Group?',
                        'data-request' => $url,
                        'data-pjax-container' => '#' . $pjaxContainer,
                        'class' => 'user-group-assignment-action',
                    ]);
            },
        ],
    ],

1 di atas), Kami akan menginisialisasi variabel dengan nilai di awal skrip saya, menggunakannya di tempat lain dan juga meneruskannya ke fungsi panggilan balik saya (lihat
// Set pjax container id
$pjaxContainer = 'user-group-assignment-grid';

    ...

    // Define ActionColumn within GridView
    [
        'class' => yii\grid\ActionColumn::class,
        'template' => '{delete}',
        'buttons' => [
            'delete' => function($url, $model, $key) use ($pjaxContainer) {
                return Html::a(FAS::icon(FAS::_TRASH),
                    $url,
                    [
                        'data-action' => 'delete',
                        'data-confirm-string' => 'Are you sure you want to remove this User Group?',
                        'data-request' => $url,
                        'data-pjax-container' => '#' . $pjaxContainer,
                        'class' => 'user-group-assignment-action',
                    ]);
            },
        ],
    ],

2 dan
// Set pjax container id
$pjaxContainer = 'user-group-assignment-grid';

    ...

    // Define ActionColumn within GridView
    [
        'class' => yii\grid\ActionColumn::class,
        'template' => '{delete}',
        'buttons' => [
            'delete' => function($url, $model, $key) use ($pjaxContainer) {
                return Html::a(FAS::icon(FAS::_TRASH),
                    $url,
                    [
                        'data-action' => 'delete',
                        'data-confirm-string' => 'Are you sure you want to remove this User Group?',
                        'data-request' => $url,
                        'data-pjax-container' => '#' . $pjaxContainer,
                        'class' => 'user-group-assignment-action',
                    ]);
            },
        ],
    ],

3 di bawah)

Bagaimana cara melewatkan fungsi callback di PHP?

Panggilan balik sederhana . Contoh. use the call_user_func() function to call functions, where arguments are the function's string name. Example:

Bagaimana Anda melewatkan fungsi panggilan balik?

Fungsi panggilan balik adalah fungsi diteruskan ke fungsi lain sebagai argumen , yang kemudian dipanggil di dalam fungsi luar untuk menyelesaikan beberapa jenis . Contoh di atas adalah callback sinkron, karena langsung dieksekusi.

Apa fungsi panggilan balik PHP?

Fungsi callback (sering disebut hanya sebagai "callback") adalah fungsi yang diteruskan sebagai argumen ke fungsi lain . Setiap fungsi yang ada dapat digunakan sebagai fungsi callback.

Bagaimana cara mendapatkan data dari URL panggilan balik di PHP?

php $post_data_expected = file_get_contents("php. //input"); $decoded_data = json_decode($post_data_expected, true); Anda dapat POSTMAN Anda untuk selalu menguji URL panggilan balik Anda untuk melihatnya berperilaku seperti yang Anda harapkan.