博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php-预定义
阅读量:6265 次
发布时间:2019-06-22

本文共 4856 字,大约阅读时间需要 16 分钟。

php预定义异常

  • Exception是所有异常的基类

  • 属性

    message:异常消息内容code:异常代码file:抛出异常的文件名line:抛出异常在该文件的行号
  • ErrorException:异常错误


php预定义变量

  • $GLOBALS:引用全局作用域中可用的全局变量

  • $_SERVER:服务器和执行环境信息

    命令 解释
    SERVER_ADDR 当前运行脚本所在的服务器的 IP 地址
    SERVER_NAME 当前运行脚本所在的服务器的主机名
    GATEWAY_INTERFACE 服务器使用的 CGI 规范的版本
    SERVER_PROTOCOL 请求页面时通信协议的名称和版本
    REQUEST_METHOD 访问页面使用的请求方法
    REQUEST_TIME 请求开始时的时间戳
    QUERY_STRING query string(查询字符串)
    DOCUMENT_ROOT 当前运行脚本所在的文档根目录
  • $_GET:通过url参数传递给当前脚本的数组

    比如:127.0.0.1:5000/index?name=zhuchunyu&password=123$_GET的值就为array(  "name"=>"zhuchunyu",  "password"=>"123",)
  • $_POST:当http发送post请求,请求头Content-Type是application/x-www-urlencoded或multipart/form-data时,也会将相应的数据以数组的形式传递给当前脚本。

  • $_FILES:文件信息在放在这个变量

  • $_REQUEST:默认包含$GET,$POST,$COKKIE

  • $_

  • $_ENV:环境变量,也是一个数组

  • $_COKKIE:存放cookie的地方

  • $HTTP_RAW_POST_

  • $http_response_header:http响应头

  • $argv:和python中sys.argv用法差不多

  • $argc:参数数目


php预定义接口

  • 遍历接口(Traversable)

    检测一个类是否可以使用(foreach)进行遍历的接口

    无法被单独实现的基本抽象接口。相反它必须由iteratorAggregate或iterator接口实现。

    Traversable {}// 这个接口没有任何方法,它的作用仅仅作为所有可遍历类的基本接口interface Iterator extends Traversable{  // 定义抽象方法,继承的iterator的子类,必须要有以下方法    abstract public current(void);    abstract public key (void);    abstract public next (void);    abstract public rewind (void);    abstract public valid (void);}/*当一个实现了iterator接口的对象,被foreach遍历时,会自动调用这些方法。调用的顺序是:rewind()->valid()->current()->key()->next()*/// 写一个实现遍历接口的例子class Myrange implements Iterator{    private $start;    private $stop;    private $step;    private $i;    public function __construct($start,$stop,$step=1)    {        $this->start=$start;        $this->stop=$stop;        $this->step=$step;    }    public function current()    {        // TODO: Implement current() method.        // 这里才是返回值        return 'current'.$this->i;    }    public function key()    {        // TODO: Implement key() method.        // 获取当前的标量,如果对象里是一个数组,那么这个就是数组里的key        $this->i;    }    public function next()    {        // TODO: Implement next() method.        // 下一个标量的值        $this->i += $this->step;    }    public function rewind()    {        // TODO: Implement rewind() method.        // 重置标量,默认是以0开始的        // 为的是Myrange(1,5,1)这种        $this->i = $this->start;    }    public function valid()    {        // TODO: Implement valid() method.        // 校验当前标量是否合法        return $this->i <= $this->stop;    }    public function getId(){        // 获取到当前标量,$i是一个私有变量        return $this->i;    }}$a = new Myrange(0,20,2);foreach ($a as $value){    var_dump($value);}var_dump($a->getId());
  • (聚合式迭代器)接口

    创建外部迭代器的接口

    interface IteratorAggregate extends Traversable {    abstract public getIterator(void)}
  • (数组式访问)接口

    提供像访问数组一样访问对象的能力的接口

    interface ArrayAccess{    // 判断元素是否存在    function offsetExists($offset);    // 获取元素    function offsetGet($offset);    // 设置元素    function offsetSet($offset,$value);    // 销毁某个元素    function offsetUnset($offset);}// 写一个类实现数组取值的方式class A implements ArrayAccess{    public $name;    public $age;    public $school;    public function __construct($name,$age,$school)    {        $this->name=$name;        $this->age=$age;        $this->school=$school;    }    public function offsetExists($offset)    {        // TODO: Implement offsetExists() method.    }    public function offsetGet($offset)    {        // TODO: Implement offsetGet() method.        return $this->$offset ? $this->$offset :null;    }    public function offsetSet($offset, $value)    {        // TODO: Implement offsetSet() method.        $this->$offset = $value;    }    public function offsetUnset($offset)    {        // TODO: Implement offsetUnset() method.    }    public function __get($name)    {        // TODO: Implement __get() method.    }}$a = new A('朱宇',22,'重庆');//var_dump($a);$name = $a["name"];$na = $a["na"];    // na这个属性不存在,得到的值为nullvar_dump($name);/*之前我没有加__get这个魔法时,是会报错的,原因是在这里这行代码$this->$offset ? $this->$offset :null;上面就是一个三元表达式,看这个表达式 $this->$offset,获取对象的一个属性,如果我没有写__get魔法方法,是会抛异常的,我加了上之后呢,没有找到属性的话,便会执行__get方法,所以这样不会抛异常。*/
  • 序列化接口

    // 接口摘要interface Serializable{    abstract public serialize(void):string;    abstract public unserialize(string $serialized):minxed}// 实现了这个Serializble这个接口,就不用去执行__sleep,__wakeup// 写一个实现这个接口的例子class A implements Serializable{    private $data;    public function __construct()    {        $this->data = [            "name"=>"zhuchunyu",            "age"=>"18"        ];    }    public function serialize()    {        // TODO: Implement serialize() method.        return serialize($this->data);    }    public function unserialize($serialized)    {        // TODO: Implement unserialize() method.        return $this->unserialize($serialized);    }    public function getData(){        return $this->data;    }}$a = new A;$ser_data = serialize($a->getData());$data = unserialize($ser_data);var_dump($ser_data);var_dump($data);
  • 生成器接口

    Generator对象是不能通过new实例化

    Generator它是实现了Iterator接口

转载于:https://www.cnblogs.com/zhuchunyu/p/10648668.html

你可能感兴趣的文章
【完全跨域】异步上传文件并获得返回值
查看>>
【TCP/IP详解 卷一:协议】第二章:链路层
查看>>
AWS开发人员认证考试样题解析
查看>>
Linux_DHCP服务搭建
查看>>
日请求亿级的 QQ 会员 AMS 平台 PHP7 升级实践
查看>>
【Coursera】Security Introduction -Eighth Week(2)
查看>>
Vue系列:如何将百度地图包装成Vue的组件
查看>>
Charles 从入门到精通
查看>>
MVC5 + EF6 简单示例
查看>>
Mysql Innodb存储引擎 insert 死锁分析
查看>>
好的用户界面-界面设计的一些技巧
查看>>
全端开发必备!10个最好的 Node.js MVC 框架
查看>>
初始Knockout
查看>>
HADOOP 2.6 INSTALLING ON UBUNTU 14.04 (hadoop 2.6 部署到ubuntu 14.04上面)
查看>>
OSSIM架构与组成综述
查看>>
用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目
查看>>
数据分析:基于Python的自定义文件格式转换系统
查看>>
如何重置Sitecore CMS中的管理员密码
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
查看>>