Rumah php教程 php手册 php全局变量和类配合使用深刻理解

php全局变量和类配合使用深刻理解

Jun 06, 2016 pm 08:30 PM
pembolehubah global baik hati

本文详细介绍下php全局变量和类在多种情况下的配合使用,感兴趣的朋友可以参考下哈,希望对大家有所帮助

情况1:
father.php如下定义:

复制代码 代码如下:


$jack = 1000;
?>
children.php 如下定义:
require("father.php");
$jack=123;
echo $jack."/n";
?>


php children.php
运行输出为123.
如果将$jack=123注释掉,运行为1000,如果将$jack=123放到require("father.php");之前,运行结果为1000.
比较好理解:php解释执行,解释到哪,执行到哪。。像$jack这种属于全局变量,如第一种情况的初始用它的时候是1000,香港虚拟主机,是在require
的时候运行得到的,结果又被改成了123,所以运行结果输出123.
情况2:
children.php代码改为如下:

复制代码 代码如下:


require("father.php");
function testJack(){
if(!isset($jack)){
echo '$jack is null'."/n";
}
}//testJack
testJack();
?>


php children.php
运行结果为:$jack is null.也就是说在testJack()中引用的$jack是一个局部变量。
如果使用global关键字,声明这个$jack是一个全局变量,代码改为如下:

复制代码 代码如下:


require("father.php");
function testJack(){
global $jack;
if(!isset($jack)){
echo '$jack is null'."/n";
}else{
echo '$jack is not null'."/n";
}
}//testJack
testJack();
?>


则运行结果为$jack is not null!
情况3:
children.php代码如下:

复制代码 代码如下:


require("father.php");
class JackTest{
public function testJack(){
if(!isset($jack)){
echo '$jack is null'."/n";
}else{
echo '$jack is not null'."/n";
}
}//testJack
}
$jackTest = new JackTest();
$jackTest->testJack();
?>


运行结果输出:$jack is null
这是因为class中的这个函数的$jack这是一个局部变量啊。
如果在function testJack开头加 global $jack;那么就输出$jack is not null了。
比较容易理解。
情况4:
把文件名当做参数动态加载,代码如下:

复制代码 代码如下:


$casefile = $_SERVER['argv'][1];
echo $casefile."/n";
require($casefile);
echo $jack."/n";
?>


运行php children.php father.php
结果如下:
father.php
1000
也就是说我们动态加载程序运行成功了。。
情况5:
要把动态加载和类的定义结合起来:
目录关系式这样的:
|- c.php
|- Bfold - b.php
|- Afold - a.class.php (里面的函数引用了../Bfold/b.php )
也就是说 在c.php 中new 了class a.class ,而a.class.php 的一个函数中require 了Bfold 文件夹下的b.php ,免备案空间,这个require(../Bfold/b.php )报错,虚拟主机,Warning: ……
因为你让服务器当前执行的是c.php 文件,所以php 解析的时候是把路径相对于c.php 而言的,你试试把(../Bfold/b.php )改成(Bfold/b.php )看看,应该就不会报错了。
下面是程序例子,说明在函数内部使用require_once (A.php ).
对require_once 的理解:
假设B.php 中引用了require_once(A.php); 这条语句。。
那么其实是相当于调用了A.php 这个匿名的lambda 函数去执行。如下图:
C.php 在一个函数调用中 require 了 B.php------》
B.php 在普通语句中 require 了 A.php--------》
A.php
现在我们调用 php B.php ;因为 B.php 在普通语句中使用了 require 调用了 A.php ,那么 A.php 会把它的相对 A 来说是全局变量的变量,注册到 B.php 的环境中。因为 B.php 是根开始调用文件,他的运行环境就是全局环境。所以A.php 文件中的变量在 B.php 可以被正常使用。

现在我们调用 php C.php ;那么 C 是在函数使用 require 调用了 B.php 的,然后 B 又调用了 A ,感觉在这个调用的过程中,相对 B 和 A 根运行环境是 C 的调用函数的环境 ,但 C 的调用函数如果要使用 B 和 A 中的变量,就没有办法了。

如果用 global $a, 去引用,那么由于 $a 在这种情况下不属于全局变量,引用不到。
如果用 $a 去引用,那么由于 $a 会被当成局部变量也引用不到的。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara pembolehubah tempatan dan pembolehubah global bagi fungsi C++? Apakah perbezaan antara pembolehubah tempatan dan pembolehubah global bagi fungsi C++? Apr 19, 2024 pm 03:42 PM

Perbezaan antara pembolehubah tempatan C++ dan pembolehubah global: Keterlihatan: Pembolehubah setempat dihadkan kepada fungsi penentu, manakala pembolehubah global boleh dilihat sepanjang program. Peruntukan memori: pembolehubah tempatan diperuntukkan pada tindanan, manakala pembolehubah global diperuntukkan dalam kawasan data global. Skop: Pembolehubah tempatan berada dalam fungsi, manakala pembolehubah global berada di seluruh program. Permulaan: Pembolehubah tempatan dimulakan apabila fungsi dipanggil, manakala pembolehubah global dimulakan apabila program bermula. Rekreasi: Pembolehubah tempatan dicipta semula pada setiap panggilan fungsi, manakala pembolehubah global dibuat hanya apabila program bermula.

php request什么意思 php request什么意思 Jul 07, 2021 pm 01:49 PM

request的中文意思为“请求”,是php中的一个全局变量,是一个包含了“$_POST”、“$_GET”和“$_COOKIE”的数组。“$_REQUEST”变量可以获取POST或GET方式提交的数据、COOKIE信息。

Adakah bahasa Go mempunyai pembolehubah global statik? Adakah bahasa Go mempunyai pembolehubah global statik? Jul 11, 2023 pm 03:37 PM

Bahasa pergi tidak mempunyai pembolehubah global statik Ia menggunakan cara yang lebih fleksibel untuk mengendalikan keperluan pembolehubah global biasanya diisytiharkan pada tahap pakej, iaitu pembolehubah yang diisytiharkan di luar fungsi ini . boleh dilihat dan boleh digunakan dalam mana-mana fungsi dalam pakej.

Penamaan konvensyen dalam PHP: Cara menggunakan penamaan kes unta untuk kelas, kaedah dan pembolehubah Penamaan konvensyen dalam PHP: Cara menggunakan penamaan kes unta untuk kelas, kaedah dan pembolehubah Jul 30, 2023 pm 02:43 PM

Penamaan konvensyen dalam PHP: Cara menggunakan notasi camelCase untuk menamakan kelas, kaedah dan pembolehubah Dalam pengaturcaraan PHP, konvensyen penamaan yang baik ialah amalan pengekodan yang penting. Ia meningkatkan kebolehbacaan dan kebolehselenggaraan kod, serta menjadikan kerja berpasukan lebih lancar. Dalam artikel ini, kami akan meneroka konvensyen penamaan biasa: camelCase dan memberikan beberapa contoh cara menggunakannya dalam PHP untuk menamakan kelas, kaedah dan pembolehubah. 1. Apakah tatanama kes unta? CamelCase ialah konvensyen penamaan biasa di mana huruf pertama setiap perkataan ditulis dengan huruf besar,

Ralat PHP: Tidak dapat mengisytiharkan kelas berulang kali, penyelesaian! Ralat PHP: Tidak dapat mengisytiharkan kelas berulang kali, penyelesaian! Aug 25, 2023 pm 04:13 PM

Ralat PHP: Tidak dapat mengisytiharkan kelas berulang kali, penyelesaian! Adalah perkara biasa bagi pembangun menghadapi masalah. Dalam pembangunan PHP, kita sering menghadapi ralat biasa: kelas tidak boleh diisytiharkan berulang kali. Masalah ini kelihatan mudah, tetapi jika tidak diselesaikan dalam masa, kod tidak akan dilaksanakan dengan betul. Artikel ini akan memperkenalkan punca masalah ini dan memberikan penyelesaian untuk rujukan anda. Apabila kami mentakrifkan kelas dalam kod PHP, jika kelas yang sama ditakrifkan beberapa kali dalam fail yang sama atau berbilang fail, ralat yang kelas tidak boleh diisytiharkan berulang kali akan berlaku. ini adalah

Melaksanakan keselamatan pembolehubah global dalam JavaScript Melaksanakan keselamatan pembolehubah global dalam JavaScript Jun 15, 2023 pm 10:33 PM

Apabila JavaScript menjadi lebih popular, semakin banyak tapak web dan aplikasi bergantung pada JavaScript. Walau bagaimanapun, penggunaan pembolehubah global dalam JavaScript boleh mempunyai masalah keselamatan. Dalam artikel ini, saya akan memperkenalkan cara melaksanakan keselamatan pembolehubah global dalam JavaScript. Cara terbaik untuk mengelak daripada menggunakan pembolehubah global ialah mengelak daripada menggunakan pembolehubah global. Dalam JavaScript, semua pembolehubah adalah global secara lalai melainkan ia diisytiharkan dalam fungsi. Oleh itu, pembolehubah tempatan harus digunakan apabila boleh

Teknologi pembungkusan dan aplikasi dalam PHP Teknologi pembungkusan dan aplikasi dalam PHP Oct 12, 2023 pm 01:43 PM

Teknologi enkapsulasi dan enkapsulasi aplikasi dalam PHP ialah konsep penting dalam pengaturcaraan berorientasikan objek Ia merujuk kepada merangkum data dan operasi pada data bersama-sama untuk menyediakan antara muka akses bersatu kepada program luaran. Dalam PHP, enkapsulasi boleh dicapai melalui pengubahsuai kawalan akses dan definisi kelas. Artikel ini akan memperkenalkan teknologi enkapsulasi dalam PHP dan senario aplikasinya, dan menyediakan beberapa contoh kod khusus. 1. Pengubah suai kawalan capaian berkapsul Dalam PHP, pengkapsulan dicapai terutamanya melalui pengubahsuai kawalan capaian. PHP menyediakan tiga pengubah kawalan akses,

Kelas tidak ditemui dalam Java - Bagaimana untuk menyelesaikan java.lang.ClassNotFoundException? Kelas tidak ditemui dalam Java - Bagaimana untuk menyelesaikan java.lang.ClassNotFoundException? Jun 25, 2023 am 10:37 AM

Semasa proses pembangunan Java, kadangkala anda akan menghadapi ralat: java.lang.ClassNotFoundException. Ia mengatakan bahawa fail kelas yang diperlukan tidak boleh ditemui dalam Mesin Maya Java (JVM). Ralat ini akan menyebabkan program tidak berjalan dengan betul, dan jika tidak diselesaikan dalam masa, akan melambatkan kemajuan pembangunan. Artikel ini akan memperkenalkan sebab dan penyelesaian untuk kelas yang tidak ditemui dalam Java. 1. Sebab 1. Laluan kelas adalah salah Dalam Java, laluan pakej dan laluan kelas adalah sangat penting. Jika classpath ditetapkan dengan salah atau fail kelas

See all articles