PHP特性

简介: PHP特性

1. 变量作用域


关于变量作用域这一点,PHP 与绝大多数语言也都不同:默认函数内不能访问函数所在作用域的成员。在 JavaScript 中,我们可以在函数作用域中使用父级作用域中的成员:


var top = 'top variable'
function foo () {
var sub = 'sub variable'
console.log(top)
// => `top variable`
function bar () {
console.log(top)
// => `top variable` console.log(sub)
// => `sub variable`
}
bar()
}
foo()


而在 PHP 中:


<?php
$top = 'top variable';
function foo () {
$sub = 'sub variable';
echo $top;
// => 无法拿到
function bar () {
echo $top;
// => 无法拿到
echo $sub;
// => 无法拿到
}
bar();
}
foo();


如果需要访问全局变量,可以通过 global 关键字声明:


<?php
$top = 'top variable';
function foo () {
// 声明在当前作用域中获取全局作用域中的 `$top`
global $top;
$sub = 'sub variable';
echo $top;
// => `top variable`
function bar () {
// 声明在当前作用域中获取全局作用域中的 `$top` 和 `$bar`
global $top, $bar;
echo $top;
// => `top variable`
echo $sub;
// => 任然无法拿到,因为 `$sub` 不再全局范围,而是在 `foo` 函数中定义
}
bar();
}
foo();


2. 超全局变量


http://www.w3school.com.cn/php/php_superglobals.asp


PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。


这些超全局变量是:


$GLOBALS — 引用全局作用域中可用的全部变量


$_SERVER — 获取服务端相关信息


$_REQUEST — 获取提交参数


$_POST — 获取 POST 提交参数


$_GET — 获取 GET 提交参数


$_FILES — 获取上传文件


$_ENV — 操作环境变量


$_COOKIE — 操作 Cookie


$_SESSION — 操作 Session


本文会介绍一些超全局变量,并会在稍后的博客中讲解其他的超全局变量。


2.1. $GLOBALS


$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。


PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。


下面的例子展示了如何使用超级全局变量 $GLOBALS:


<?php
$x = 75;
$y = 25;
function foo () {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
foo(); echo $z; // => 100


3. 常量定义与使用


常量跟变量一样也是一个数据容器,但是不同的是一旦申明过后就不允许被修改。


3.1. 定义常量


定义常量使用的是内置的 define 函数


第一个参数是常量的名称,建议采用全大写字母命名,多个单词下划线分隔


第二个参数是常量中存放的数据,可以是任意类型


第三个参数是常量名称是否区不分大小写,默认 false 区分大小写


<?php
// 定义常量使用的是内置的 `define` 函数
// 第一个参数是常量的名称,建议采用全大写字母命名,多个单词下划线分隔
// 第二个参数是常量中存放的数据,可以是任意类型
// 第三个参数是常量名称是否区不分大小写,默认 false 区分大小写
define('SYSTEM_NAME', '阿里百秀');
define('SYSTEM_ENABLE', true);


3.2. 使用常量


<?php
// 直接通过常量的名称访问常量
// 与变量不同的是不需要用 $
echo SYSTEM_NAME; 
echo SYSTEM_ENABLE;


4. 载入其他文件


通常情况下,当一个文件中的代码过长,自然会想到要拆分到多个文件中。随着开发经验的积累,慢慢的会发现,


除了文件过程应该拆分文件,更应该做的事情是根据用途去划分。


不管你是怎样想的,核心问题都是一样:怎么将代码拆分到多个文件中?


PHP 中引入其他 PHP 文件有四种方式:


require


require_once


include


include_once


四种方式的对比:


image.png


总结来说:


横向分为两类:require 和 include 两种,区别在于 require 会因为载入文件不存在而停止当前文件执行,而include 不会。


纵向分为两类:xxx 和 xxx_once,区别在于代码中每使用一次 xxx 就执行一次载入的文件,而 xxx_once 只会在第一次使用是执行。


使用层面:


include 一般用于载入公共文件,这个文件的存在与否不能影响程序后面的运行


require 用于载入不可缺失的文件


至于是否采用一次载入(once)这种方式取决于被载入的文件


案例:require


require.php


<?php
// // 类似 CSS 的 import 导入文件
// require 'config.php';
// // require 可以用于在当前脚本中载入一个别的脚本文件并且执行他
// // require 在每一次调用时都会载入对应的文件
// echo SYSTEM_NAME;
// require 'config.php';
// echo SYSTEM_NAME;
// require_once ==================================
// require_once 如果之前载入过,不再执行(只执行一次)
// 由于类似于 定义常量 定义函数 这种操作不能执行多次
// 所以 require_once 更加合适载入这种文件
require_once 'config.php';
echo SYSTEM_NAME;
require_once 'config.php';
echo SYSTEM_NAME;


config.php


<?php
/**
 * 定义公共的配置信息
 * 1. 便于维护
 * 2. 公共使用
 */
define('SYSTEM_NAME', 'HELLO');
define('SYSTEM_VERSION', '1.0.0');
define('DB_HOST', '192.168.110.120');


案例:include


aside.php


<aside>
  这是侧边栏1111
</aside>


include.php


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <!-- require 特点: 一旦被载入的文件不存在就会报一个致命错误,当前文件不再往下执行 -->
  <!-- include 特点: 载入文件不存在不会报错误(会有警告,警告不用管),当前文件继续执行 -->
  <?php include 'aside.php'; ?>
  <main>
    这是主要的区域
  </main>
</body>
</html>


5.php常用API


内容太多,见链接:https://yangyongli.blog.csdn.net/article/details/111559480

相关文章
|
1月前
|
SQL 安全 PHP
PHP 自发布以来一直在 Web 开发领域占据重要地位,PHP 8 更是带来了属性、刚性类型等新特性。
【10月更文挑战第1天】PHP 自问世以来,凭借其易用性和灵活性,在 Web 开发领域迅速崛起。从简单的网页脚本语言逐步演进为支持面向对象编程的现代语言,尤其自 PHP 5.3 引入命名空间后,代码组织和维护变得更加高效。PHP 7 的性能优化和 PHP 8 的新特性(如属性和刚性类型)进一步巩固了其地位。框架如 Laravel、Symfony、Yii2 和 CodeIgniter 等简化了开发流程,提高了效率和安全性。
40 2
|
2月前
|
PHP 开发者
PHP 7新特性深度解析与实践应用
【9月更文挑战第17天】本文将深入探讨PHP 7的新特性及其对开发者的实际影响,同时通过实例演示如何有效利用这些特性优化代码和提高性能。我们将从类型声明的增强开始,逐步深入到其他关键改进点,最后通过一个综合案例展示如何将这些新特性应用于日常开发中。
|
3月前
|
机器学习/深度学习 API PHP
PHP 7新特性深度解析与应用实践深入浅出:用深度学习识别手写数字
【8月更文挑战第27天】随着PHP 7的发布,这个广受欢迎的Web开发语言带来了许多令人兴奋的新特性。本文将深入探讨这些新特性,并展示如何在实际项目中利用它们来提升代码的性能和可维护性。无论你是PHP新手还是资深开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
|
5天前
|
PHP 开发者
PHP 7新特性深度解析及其最佳实践
【10月更文挑战第31天】本文将深入探讨PHP 7带来的革新,从性能提升到语法改进,再到错误处理机制的变革。我们将通过实际代码示例,展示如何高效利用这些新特性来编写更加健壮和高效的PHP应用。无论你是PHP新手还是资深开发者,这篇文章都将为你打开一扇窗,让你看到PHP 7的强大之处。
|
5天前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
16天前
|
PHP 数据安全/隐私保护 开发者
PHP 7新特性解析与实践
【10月更文挑战第20天】本文将深入浅出地介绍PHP 7的新特性,包括性能提升、语法改进等方面。我们将通过实际代码示例,展示如何利用这些新特性优化现有项目,提高开发效率。无论你是PHP新手还是资深开发者,都能从中获得启发和帮助。
|
29天前
|
安全 编译器 PHP
PHP 7新特性深度解析与实践
【10月更文挑战第7天】在这篇文章中,我们将探索PHP 7带来的新特性和改进,以及如何利用这些新工具来提升你的代码效率。从性能优化到语法简化,再到错误处理的改进,本文将带你深入了解PHP 7的核心变化,并通过实际代码示例展示如何将这些新特性应用到日常开发中。无论你是PHP新手还是资深开发者,这篇文章都将为你提供有价值的见解和技巧。
38 6
|
1月前
|
安全 编译器 API
探索PHP 8的新特性及其对现代Web开发的影响
【10月更文挑战第5天】随着PHP 8的发布,这门历史悠久的脚本语言重获新生。PHP 8引入了联合类型、命名参数、属性、空安全运算符及JIT编译器等一系列新特性,不仅提升了开发者的编程体验,还增强了PHP在现代Web开发领域的竞争力。本文将详细介绍这些新特性及其对Web开发的影响。例如,联合类型允许函数参数接受多种类型,提高代码灵活性;命名参数则使函数调用更加直观易懂;属性可用于装饰类、方法等,提供额外信息;空安全运算符避免了访问未定义属性时的错误;JIT编译器则显著提升了性能。这些改进共同提升了代码质量和开发效率,巩固了PHP在Web开发中的地位。
21 4
|
1月前
|
缓存 安全 PHP
PHP 7新特性及其最佳实践
【10月更文挑战第2天】本文将深入探讨PHP 7带来的创新特性,以及如何运用这些特性优化代码和提升性能。我们将从类型声明、空值合并运算符等新语法出发,通过实际代码示例,展示如何高效利用PHP 7的新特性进行开发。文章还将分享一系列最佳实践,帮助你写出更安全、更快速的PHP代码。无论你是PHP新手还是资深开发者,这篇文章都将为你提供有价值的见解和技巧。
38 5
|
25天前
|
安全 编译器 API
探索PHP 8的新特性及其对现代Web开发的影响
探索PHP 8的新特性及其对现代Web开发的影响
15 0
下一篇
无影云桌面