当前位置: 首页 > 工具软件 > superGlobals > 使用案例 >

【PHP学习笔记】6:foreach循环,superglobals(超级全局变量),命名空间,类和对象

方璞
2023-12-01

PHP中除了foreach循环之外的其它循环和分支(如while,do-while,switch,if-else,for)都和C/C++/Java的语法很类似,就不再记录了。PHP中的foreach循环则不太一样。

foreach循环

PHP中的foreach循环用来遍历数组,语法是:

foreach($数组名 as $迭代临时变量名)
{
    //操作迭代临时变量
}

<?php
$a = [
    3 => 'lzh',
    1 => 'is',
    2 => 'so',
    0 => 'sb'
];

foreach($a as $value)
{
    echo $value,' ';
}

输出:

lzh is so sb 

superglobals

超级全局变量在PHP脚本的全部作用域中都可用,如前面学的用来访问全局变量的$GLOBALS数组就是一个超级全局变量。

$_SERVER

数组$_SERVER由Web服务器创建,包含服务器的各种信息。

<?php
echo '当前执行脚本的文件名:', $_SERVER['PHP_SELF'];
echo "<br>";
echo '当前运行脚本所在的服务器的主机名:', $_SERVER['SERVER_NAME'];
echo "<br>";
echo '当前请求头中Host项的内容:', $_SERVER['HTTP_HOST'];
echo "<br>";
echo 'Web服务器使用的端口:', $_SERVER['SERVER_PORT'];
echo "<br>";
echo '用户使用的浏览器,操作系统等信息:', $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo '包含当前脚本的路径:', $_SERVER['SCRIPT_NAME'];//在页面需要指向自己时常用
echo "<br>";
echo 'Apache服务器配置文件中的SERVER_ADMIN参数:', $_SERVER['SERVER_ADMIN'];
echo "<br>";
echo '当前请求头中Accept项的内容:', $_SERVER['HTTP_ACCEPT'];
echo "<br>";
echo '访问页面使用的请求方法:', $_SERVER['REQUEST_METHOD'];
echo "<br>";
echo '请求页面时通信协议的名称和版本:', $_SERVER['SERVER_PROTOCOL'];
echo "<br>";
echo '服务器标识字符串:', $_SERVER['SERVER_SOFTWARE'];
echo "<br>";
echo '服务器使用的CGI规范的版本:', $_SERVER['GATEWAY_INTERFACE'];
echo "<br>";
echo '当前运行脚本所在的服务器的IP地址:', $_SERVER['SERVER_ADDR'];

输出:

当前执行脚本的文件名:/lzh/fromPS.php
当前运行脚本所在的服务器的主机名:localhost
当前请求头中Host项的内容:localhost
Web服务器使用的端口:80
用户使用的浏览器,操作系统等信息:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
包含当前脚本的路径:/lzh/fromPS.php
Apache服务器配置文件中的SERVER_ADMIN参数:admin@example.com
当前请求头中Accept项的内容:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
访问页面使用的请求方法:GET
请求页面时通信协议的名称和版本:HTTP/1.1
服务器标识字符串:Apache/2.4.17 (Win64) PHP/7.0.0
服务器使用的CGI规范的版本:CGI/1.1
当前运行脚本所在的服务器的IP地址:::1

#

命名空间
关键字namespace用于声明命名空间,所有常量、类、函数默认都在全局命名空间下,全局命名空间相当于没有名字的命名空间。

如果使用了namespace来声明命名空间,那么命名空间的声明必须在所有代码之前,其前只能有declare定义文件编码,不能有其它代码。

<?php
//名字为lzhNmSpc的命名空间
namespace lzhNmSpc {
    //常量
    const LZH = 'lzh is sb';
    //类
    class sb
    {
        static function myfun()
        {
            echo __METHOD__,'执行了';
        }
    }
    //函数
    function lzhfun(){
        echo __FUNCTION__,'执行了';
    }
}

//全局命名空间
namespace {
    //调用函数
    \lzhNmSpc\lzhfun();
    echo "<br>";
    //调用类中的方法
    \lzhNmSpc\sb::myfun();
}

输出:

lzhNmSpc\lzhfun执行了
lzhNmSpc\sb::myfun执行了

类和对象

类的声明

在PHP中,用关键字class声明一个类,类中的成员变量需要使用关键字var声明,用关键字function声明类中的成员方法,用关键字new建立类的对象,用->符访问其成员。

<?php

class lzhCls
{
    var $a = 123;

    function lzhFun()
    {
        echo __FUNCTION__, '执行了';
    }
}

$lzhObj = new lzhCls();
echo $lzhObj->a;//访问成员变量
echo "<br>";
$lzhObj->lzhFun();//调用成员方法

输出:

123
lzhFun执行了

构造函数

PHP中的构造函数函数名为__construct,PHP中this的用法是$this->成员名

<?php

class lzhCls
{
    var $a,$b;
    public function __construct($a,$b)
    {
        $this->a=$a;
        $this->b=$b;
    }
    public function syso(){
        echo $this->a;
        echo "<br>";
        echo $this->b;
    }
}
//调用有参的构造函数进行构造
$lzhObj = new lzhCls(1,4);
$lzhObj->syso();

输出:

1
4
 类似资料: