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

  • $_SESSION:存放session的地方

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

  • $_COKKIE:存放cookie的地方

  • $HTTP_RAW_POST_DATA:原生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这个属性不存在,得到的值为null
    var_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接口

php-预定义的更多相关文章

  1. C预定义宏

    作用:对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数. 下面一个例子是打印上面这些预定义的宏的 ...

  2. C++系统预定义4个用于标准数据流对象

    C++系统预定义4个用于标准数据流对象 cin   cout   cerr   clog C++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的 ...

  3. android 21 隐式意图启动系统预定义activity

    Intent intent=new Intent(LoginActivity.this, MainActivity.class);//显示意图启动,显示从一个activity到另一个activity, ...

  4. 关于标准C语言的预定义宏

    标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__  当前 ...

  5. VC 预定义宏

    列出预定义的 ANSI C和C++ Microsoft实现宏. 编译器识别预定义的ANSI C宏,并且Microsoft C++实现提供几个更多.这些宏不带参数,并且不能重定义.下面列出的某些预定义的 ...

  6. C/C++预定义宏

    编译器识别预定义的 ANSI/ISO C99 C 预处理宏,Microsoft C++ 实现将提供更多宏.这些预处理器宏不带参数,并且不能重新定义. ANSI 兼容的预定义宏 __FILE__,__L ...

  7. grunt-contrib-watch 监控 JS 文件改变来运行预定义的Tasks

    依赖于 GruntJs ~0.4.0 监控 JS 文件改变来运行预定义的Tasks Demo: watch: { scripts: { files: ['src/**/*.js'], tasks: [ ...

  8. 预定义宏,C语言预定义的宏详解

    1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如 ...

  9. 使用预定义的action值启动系统应用

    1.启动浏览器 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); //可以传一个搜索关键字,会直接显示 ...

  10. OS X以及iOS中与硬件环境相关的预定义宏

    由于现在ARM处理器的飞速发展,从Apple A4到现在的Apple A7,从32位到64位,每一代处理器几乎都增加了不少特性,从而在架构上也有所不同.比如Apple A6引入了ARMv7S架构,增加 ...

随机推荐

  1. go的编译与重启

    ps -ef|grep pro-name| grep -v grep|awk '{print $2}'|xargs kill -9 > /dev/null go build nohup ./xe ...

  2. Python基础-简介二

    一.变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些 ...

  3. WPF 蒙罩层 LoadingPage

    WPF 蒙罩层 LoadingPage 前言 无论是在PC客户端,移动端,网站,在遇到长时间处理的时候都会需要用到蒙罩层,让用户有更好的体现.今天上网逛了一下各位前辈网友的蒙罩层的实现方式,觉得有很多 ...

  4. Redux学习笔记-基础知识

      Redux概述 是什么:Redux是管理状态的容器,提供可预测的状态管理. 怎么做:Redux主要是用来管理组件或者应用的状态,本质上跟一个事件处理器差不多.通过分发action触发reduce来 ...

  5. 关于使用ajax上传图片问题

    今天需要做一个上传图片的功能,由于框架里面没有带,上网搜了下.看到有spring mvc的图片上传,而且有例子,刚好是自己需要的,直接粘贴复制下.参考: http://blog.csdn.net/lu ...

  6. html 颜色在线取色器

    推荐一个链接 还不错 http://www.atool.org/colorpicker.php

  7. Linux->ZooKeeper开机启动的俩种方式

    两种方式可以实现开机自启动 第一种:直接修改/etc/rc.d/rc.local文件 在/etc/rc.d/rc.local文件中需要输入两行, 其中export JAVA_HOME=/usr/jav ...

  8. 【Leetcode】【Medium】Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  9. linux下查看数据库版本的5中方法

    1.在Linux终端窗口中,输入mysql -V查看MySQL版本信息[sky@qin ~]# mysql -Vmysql  Ver 14.14 Distrib 5.1.29-rc, for pc-l ...

  10. 最新-Linux常用命令大全-随时更新

      一.系统管理与设置 1.信息显示命令 # man & info  //帮助手册 # man 命令 //显示相应命令的帮助内容 # arch  //显示当前系统体系结构 # cal  //显 ...