Skop pembolehubah PHP merentas blok kod
P粉771233336
2023-08-24 13:06:58
<p>Saya sangat baru dengan PHP dan masih belajar. </p>
<p>Saya selalunya perlu mendapatkan semula pembolehubah tertentu dan mengakses sifatnya. </p>
<pre class="brush:php;toolbar:false;"><?php
$id = $_REQUEST['id'];
$user_info = get_userdata($id);
echo('Nama pengguna: ' . $user_info->user_login . "<br>");
echo('Tahap pengguna: ' . $info_pengguna->tahap_pengguna . "<br>");
echo('ID Pengguna: ' . $user_info->ID . "<br>");
echo('Nama: ' . $user_info->user_firstname . "<br>");
echo('Nama akhir: ' . $user_info->user_lastname . "<br>");
echo('Masa pendaftaran: ' . $user_info->user_registered . "<br>");
?></pra>
<p>Saya lebih suka mengambil<kod>$user_info = get_userdata($id);</ code> </p>
<pre class="brush:php;toolbar:false;"><?php
$id = $_REQUEST['id'];
$user_info = get_userdata($id);
?>
<Beberapa HTML>
<?php echo $user_info->user_login ?>
<Beberapa HTML>
<?php echo $user_info->user_login ?></pre>
<p>Tetapi saya mengesyaki bahawa <code>$user_info</code> tidak boleh dikongsi antara blok kerana ia bukan global. Apakah pendekatan biasa dalam situasi ini? </p>
Anda boleh menggunakannya di dalam blok kod (gelung, pernyataan bersyarat), tetapi tidak di dalam fungsi. Jika anda ingin menggunakannya di dalam fungsi, anda perlu menggunakan kata kunci
global
:Anda boleh mengetahui lebih lanjut tentang skop pembolehubah PHP dalam dokumentasi rasmi :)
Anda meletakkan terlalu banyak makna ke dalam blok kod php.
Ini bukan perkara global.
Blok ini tergolong dalam skrip PHP yang sama. Ia hanyalah cara yang bagus untuk mengeluarkan HTML dan tidak mempunyai makna lain. Anda boleh menggantikannya dengan HTML gema tanpa sebarang perbezaan.
Keseluruhan skrip PHP dilaksanakan sekali gus, bukan secara berulang, seperti yang anda bayangkan, fikirkan blok PHP dilaksanakan pada bahagian pelayan, kemudian blok HTML dilaksanakan pada bahagian klien, kemudian kembali ke bahagian pelayan di mana blok PHP dilaksanakan, dan seterusnya analogi. Ini adalah salah.
Keseluruhan skrip PHP dilaksanakan pada bahagian pelayan, dan hasilnya dipaparkan sebagai HTML biasa dalam penyemak imbas, dan kemudian tamat.
Itulah sebabnya anda tidak boleh menulis kedua-dua borang HTML dan pengendalinya dalam skrip PHP yang sama, cuma letakkan yang kedua selepas yang pertama. Anda kena panggil pelayan semula untuk pengendali berfungsi. Ini akan menjadi panggilan yang sama sekali berbeza, satu lagi contoh skrip yang sama, tidak tahu apa-apa tentang panggilan sebelumnya, yang telah lama tamat. Ini juga satu lagi perkara yang anda mesti tahu tentang PHP:
Pelaksanaan skrip PHP adalah atom. Ia bukan seperti aplikasi desktop yang berjalan secara berterusan dalam penyemak imbas, atau malah daemon yang mengekalkan sambungan berterusan ke aplikasi desktop. Ia lebih seperti utiliti baris arahan - lakukan tugas anda dan keluar. Ia berjalan secara diskret: