函数(与javascript中定义函数方法相同)
<?php
// 函数名不区分大小写
function foo ($name, $title) {
echo "$name ($title)";
}
// 调用
foo('zce', 'UFO');
Foo('zgd', 'SBO'); // 大小写不区分
?>
注意虽然函数名不区分大小写,但不要这样搞!!!! 特性
变量作用域
关于变量作用域这一点,php和绝大多数语言不同 默认函数作用域中不能访问函数所在作用域成员
在javascript中我们可以在函数作用域中使用父级作用域的成员
<script>
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()
</script>
而在php中
<?php
$top = 'top variable';
function foo () {
$sub = 'sub variable';
echo $top;
// => 无法拿到
function bar () {
echo $top;
// => 无法拿到
echo $sub;
// => 无法拿到
}
bar();
}
foo();
?>
如果需要访问全局变量,需要用 globle 关键字声明
<?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();
?>
超全局变量
php中很多预定义变量都是 超全局的, 这意味着它们在一个脚本的全部作用域中都可使用,在函数中也无需用global关键字声明
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 获取服务端相关信息
$_REQUEST — 获取提交参数
$_POST — 获取 POST 提交参数
$_GET — 获取 GET 提交参数
$_FILES — 获取上传文件
$_ENV — 操作环境变量
$_COOKIE — 操作 Cookie
$_SESSION — 操作 Session
.......
$GLOBLAS
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)
<?php
$x = 75;
$y = 25;
function foo () {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
foo();
echo $z;
// => 100
?>
常量
常量跟变量一样也是一个数据容器,但是不同的是一旦申明过后就不允许被修改。
<?php
// 定义常量使用的是内置的 `define` 函数
// 第一个参数是常量的名称,建议采用全大写字母命名,多个单词下划线分隔
// 第二个参数是常量中存放的数据,可以是任意类型
// 第三个参数是常量名称是否区不分大小写,默认 false 区分大小写
define('SYSTEM_NAME', '不变的哦');
define('SYSTEM_ENABLE', true);
// 直接通过常量的名称访问常量
// 与变量不同的是不需要用 $
echo SYSTEM_NAME;
echo SYSTEM_ENABLE;
?>
载入其他文件 :相当于将被载入的文件的代码在当前位置复制一份
PHP 中引入其他 PHP 文件有四种方式
include:1.如果文件载入失败,也不会影响后续代码的执行 2.如果重复载入文件那么被载入的文件的代码会真正的重复执行
include_once:1.如果文件载入失败,也不会影响后续代码的执行 2.如果重复载入文件,最终也只会载入一次
require:1.如果文件载入失败,那么后续不再执行 2.如果重复载入文件那么被载入的文件的代码会真正的重复执行
require_once:1.如果文件载入失败,那么后续不再执行 2.如果重复载入文件,最终也只会载入一次
include 一般用于载入公共文件,这个文件的存在与否不能影响程序后面的运行
require 用于载入不可缺失的文件
至于是否采用一次载入(once)这种方式取决于被载入的文件