Skop pembolehubah antara blok kod PHP
P粉403821740
P粉403821740 2023-10-22 14:41:03
0
2
713

Saya (masih) baharu dalam PHP dan belajar sambil saya pergi.

Saya selalunya perlu mendapatkan semula pembolehubah tertentu dan mengakses sifatnya.

<?php
      $id = $_REQUEST['id'];
      $user_info = get_userdata($id);

      echo('Username: '        . $user_info->user_login . "<br>");
      echo('User level: '      . $user_info->user_level . "<br>");
      echo('User ID: '         . $user_info->ID . "<br>");
      echo('First Name: '      . $user_info->user_firstname . "<br>");
      echo('Family Name: '     . $user_info->user_lastname . "<br>");
      echo('user_registered: ' . $user_info->user_registered . "<br>");
?>

Saya lebih suka mengambil semula $user_info = get_userdata($id); sekali dan kemudian menggunakannya apabila diperlukan Dalam fail yang sama, tetapi dalam <?php?> blok

yang berbeza
<?php
    $id = $_REQUEST['id'];
    $user_info = get_userdata($id);
?>

<some HTML>

<?php echo $user_info->user_login; ?>

<some HTML>

<?php echo $user_info->user_login; ?>

Tetapi saya mengesyaki $user_info tidak boleh dikongsi antara blok kerana ia bukan global. Apakah pendekatan biasa?

P粉403821740
P粉403821740

membalas semua(2)
P粉713846879

Anda boleh menggunakannya di dalam blok (gelung, jika pernyataan) tetapi tidak di dalam fungsi. Untuk menjadikannya berfungsi di dalam fungsi, anda perlu menggunakan kata kunci global:

$user_info ....... //declared outside

function foo(){
   global $user_info // now available here too

   // more code
}

Anda boleh membaca lebih lanjut tentang skop pembolehubah PHP pada dokumentasi rasmi :)

P粉262926195

Anda memberi terlalu banyak makna dalam blok kod php anda.
Ini bukan perkara global.
Blok ini tergolong dalam skrip PHP yang sama. Ia hanyalah cara bijak untuk mengeluarkan HTML, tidak lebih. Anda boleh menggantikannya dengan HTML gema tanpa sebarang perbezaan.

Keseluruhan skrip PHP dilaksanakan sekali gus, dan bukannya secara berulang, seperti yang anda bayangkan, fikirkan bahagian PHP yang dilaksanakan pada bahagian pelayan, kemudian bahagian HTML dilaksanakan pada bahagian klien, kemudian kembali ke bahagian PHP pada bahagian pelayan dan lain-lain. Ini adalah salah.
Keseluruhan skrip PHP dilaksanakan di bahagian pelayan, menjana HTML biasa dalam penyemak imbas, kemudian hilang.

Itulah sebabnya anda tidak boleh memprogramkan kedua-dua bentuk HTML dan pengendalinya dalam skrip PHP yang sama, cuma letakkan yang kedua selepas yang pertama. Anda kena panggil pelayan sekali lagi untuk pengendali berfungsi dengan baik. Ini akan menjadi satu lagi panggilan sepenuhnya, satu lagi contoh skrip yang sama, tidak tahu apa-apa tentang panggilan sebelumnya, yang sudah lama mati. Ini satu lagi perkara yang anda mesti tahu tentang PHP:

Pelaksanaan skrip PHP adalah atom. Ia bukan seperti aplikasi desktop yang sentiasa berjalan dalam penyemak imbas, atau malah daemon yang sentiasa disambungkan ke aplikasi desktop. Ia lebih seperti utiliti baris arahan - melakukan tugasnya dan keluar. Ia berjalan secara bebas:

  1. Pelayar membuat panggilan
  2. PHP bangun, mencipta halaman HTML, menghantarnya ke penyemak imbaskemudian ditamatkan
  3. Pelayar memaparkan HTML ini dan memaparkannya kepada pengguna.
  4. Pengguna klik pautan
  5. Pelayar membuat panggilan
  6. Satu lagi contoh PHP, tidak menyedari panggilan sebelumnya, dibangunkan dan seterusnya
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!