Saya punya kode seperti ini:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
apakah ada cara untuk mendefinisikan variabel global di satu tempat dan membuat variabel $a
dapat diakses di semua fungsi sekaligus? tanpa memanfaatkan global $a;
lebih banyak?
php
global-variables
global
CAHAYA
sumber
sumber
global
kata kunci, pertimbangkan untuk menggunakan$GLOBALS['a']
superglobal di semua lingkup, atau pertimbangkan untuk meneruskan parameter ke fungsi Anda.Jawaban:
The
$GLOBALS
array dapat digunakan sebagai pengganti:Dari Manual :
Jika Anda memiliki serangkaian fungsi yang memerlukan beberapa variabel umum, kelas dengan properti mungkin merupakan pilihan yang baik alih-alih global:
sumber
Jika variabel tidak akan berubah, Anda dapat menggunakan
define
Contoh:
sumber
FOOTER_CONTENT
dicoba untuk dimodifikasi? Apakah itu sepertifinal
di Jawa atauconst
di C, C ++ dan C #?Tambahkan variabel Anda di $ GLOBALS seperti super global array
dan menggunakannya secara global
atau Anda dapat menggunakan konstanta yang dapat diakses di seluruh skrip
sumber
Jika suatu variabel dideklarasikan di luar fungsi, ia sudah ada dalam lingkup global. Jadi tidak perlu mendeklarasikan. Tetapi dari tempat Anda memanggil variabel ini harus memiliki akses ke variabel ini. Jika Anda menelepon dari dalam suatu fungsi, Anda harus menggunakan
global
kata kunci:Menggunakan kata kunci global di luar fungsi bukanlah kesalahan. Jika Anda ingin memasukkan file ini ke dalam suatu fungsi, Anda dapat mendeklarasikan variabel sebagai
global
.Anda bisa menggunakannya
$GLOBALS
juga. Ini superglobal sehingga memiliki akses di mana-mana.Tergantung pada pilihan Anda, Anda dapat memilih salah satu.
sumber
Jawaban ini sangat terlambat tetapi apa yang saya lakukan adalah mengatur kelas yang menampung Boolean, array, dan nilai integer-initial sebagai variabel statis lingkup global. Setiap string konstan didefinisikan seperti itu.
Kata
static
kunci harus ada di kelas lain vars $ a, $ b, dan $ c tidak akan dicakup secara global.sumber
Anda menjawab ini dengan cara Anda menulis pertanyaan - gunakan 'define'. tetapi begitu diatur, Anda tidak dapat mengubah suatu definisi.
Atau, ada trik dengan konstanta di kelas, seperti class :: konstanta yang dapat Anda gunakan. Anda juga bisa membuatnya variabel dengan mendeklarasikan properti statis ke kelas, dengan fungsi untuk mengatur properti statis jika Anda ingin mengubahnya.
sumber
Anda dapat mencoba kata kunci
use
dalam fungsi Penutupan atau Lambdas jika ini sesuai dengan keinginan Anda ... PHP 7.0. Bukan itu lebih baik, tetapi hanya sebuah alternatif.demo | info
sumber
Mari kita berpikir sedikit berbeda:
Dan Anda dapat menggunakan dan memodifikasinya kapan saja Anda suka, seperti:
sumber
Bagaimana jika Anda menggunakan fungsi prosedural alih-alih variabel dan memanggil mereka di mana saja seperti Anda.
Saya biasanya membuat koleksi nilai konfigurasi dan meletakkannya di dalam fungsi dengan pernyataan kembali. Saya hanya memasukkan bahwa di mana saya perlu menggunakan nilai global dan memanggil fungsi tertentu.
sumber
$GLOBALS[]
adalah solusi yang tepat, tetapi karena kita berbicara tentang alternatif, suatu fungsi juga dapat melakukan pekerjaan ini dengan mudah:sumber
Anda seharusnya tidak menggunakan global lagi, mereka tidak tersedia dalam PHP 5.4.
sumber