php全局变量和类配合使用深刻理解
本文详细介绍下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 会被当成局部变量也引用不到的。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C++ 지역 변수와 전역 변수의 차이점: 가시성: 지역 변수는 정의 함수로 제한되는 반면 전역 변수는 프로그램 전체에서 볼 수 있습니다. 메모리 할당: 로컬 변수는 스택에 할당되고, 글로벌 변수는 글로벌 데이터 영역에 할당됩니다. 범위: 지역 변수는 함수 내에 있고 전역 변수는 프로그램 전체에 있습니다. 초기화: 지역 변수는 함수가 호출될 때 초기화되고, 전역 변수는 프로그램이 시작될 때 초기화됩니다. 레크리에이션: 지역 변수는 함수 호출 시마다 다시 생성되는 반면, 전역 변수는 프로그램이 시작될 때만 생성됩니다.

go 언어에는 정적 전역 변수가 없습니다. 전역 변수의 필요성을 처리하기 위해 보다 유연한 방법을 사용합니다. 전역 변수는 일반적으로 패키지 수준에서 선언됩니다. 즉, 이러한 전역 변수는 패키지 전체에 걸쳐 선언됩니다. .는 표시되며 패키지의 모든 기능에서 사용할 수 있습니다.

요청의 중국어 의미는 "요청"입니다. PHP의 전역 변수이며 "$_POST", "$_GET" 및 "$_COOKIE"를 포함하는 배열입니다. "$_REQUEST" 변수는 POST 또는 GET으로 제출된 데이터 및 COOKIE 정보를 얻을 수 있습니다.

PHP 오류: 클래스를 반복적으로 선언할 수 없습니다. 해결 방법! 개발자가 문제에 직면하는 것은 흔한 일입니다. PHP 개발에서는 클래스를 반복적으로 선언할 수 없다는 일반적인 오류가 자주 발생합니다. 이 문제는 간단해 보이지만 시간 내에 해결하지 않으면 코드가 올바르게 실행되지 않습니다. 이 문서에서는 이 문제의 원인을 설명하고 참조할 수 있는 해결 방법을 제공합니다. PHP 코드에서 클래스를 정의할 때, 같은 파일 또는 여러 파일에 같은 클래스를 여러 번 정의하면 해당 클래스를 반복적으로 선언할 수 없다는 오류가 발생합니다. 이것은

JavaScript가 대중화되면서 점점 더 많은 웹사이트와 애플리케이션이 JavaScript를 사용하게 되었습니다. 그러나 JavaScript에서 전역 변수를 사용하면 보안 문제가 발생할 수 있습니다. 이번 글에서는 자바스크립트에서 전역 변수 안전성을 구현하는 방법을 소개하겠습니다. 전역 변수를 사용하지 않는 가장 좋은 방법은 전역 변수를 사용하지 않는 것입니다. JavaScript에서 모든 변수는 함수 내에서 선언되지 않는 한 기본적으로 전역 변수입니다. 따라서 가능하면 지역 변수를 사용해야 합니다.

PHP의 명명 규칙: CamelCase 표기법을 사용하여 클래스, 메서드 및 변수의 이름을 지정하는 방법 PHP 프로그래밍에서 좋은 명명 규칙은 중요한 코딩 방법입니다. 코드 가독성과 유지 관리성이 향상되고 팀워크가 더욱 원활해집니다. 이 기사에서는 일반적인 명명 규칙인 camelCase를 살펴보고 이를 PHP에서 클래스, 메소드 및 변수 이름에 사용하는 방법에 대한 몇 가지 예를 제공합니다. 1. 카멜 케이스 명명법이란 무엇입니까? CamelCase는 각 단어의 첫 글자를 대문자로 표기하는 일반적인 명명 규칙입니다.

PHP의 캡슐화 기술과 애플리케이션 캡슐화는 객체 지향 프로그래밍에서 중요한 개념입니다. 이는 외부 프로그램에 대한 통합 액세스 인터페이스를 제공하기 위해 데이터와 데이터에 대한 작업을 함께 캡슐화하는 것을 의미합니다. PHP에서는 액세스 제어 수정자와 클래스 정의를 통해 캡슐화를 달성할 수 있습니다. 이 기사에서는 PHP의 캡슐화 기술과 해당 애플리케이션 시나리오를 소개하고 몇 가지 구체적인 코드 예제를 제공합니다. 1. 캡슐화된 액세스 제어 수정자 PHP에서 캡슐화는 주로 액세스 제어 수정자를 통해 이루어집니다. PHP는 세 가지 액세스 제어 수정자를 제공합니다.

Java 개발 프로세스 중에 때때로 java.lang.ClassNotFoundException 오류가 발생합니다. JVM(Java Virtual Machine)에서 필요한 클래스 파일을 찾을 수 없다고 나옵니다. 이 오류는 프로그램이 제대로 실행되지 않는 원인이 되며, 제때 해결되지 않으면 개발 진행이 지연될 수 있습니다. 이 기사에서는 Java에서 찾을 수 없는 클래스에 대한 이유와 해결 방법을 소개합니다. 1. 이유 1. 클래스 경로가 잘못되었습니다. Java에서는 패키지 경로와 클래스 경로가 매우 중요합니다. 클래스패스가 잘못 설정되었거나 클래스 파일이
