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. 原生js模拟jquery写法

    function $_custom(fun) { document.onreadystatechange = function() { if (document.readyState == " ...

  2. 使用JS完成首页轮播图效果

    获取document.getElementById("id名称"); 事件onload 定时操作setInterval("changeImg()",3000); ...

  3. mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)

    背景 mongoDB是近几年迅速崛起的一种文档型数据库,广泛应用于对事务无要求,但是要求较好的开发灵活性,扩展弹性的领域,. 随着企业对数据挖掘需求的增加,用户可能会对存储在mongo中的数据有挖掘需 ...

  4. Logistic Regression 之错误翻译

    根据周志华老师的讲法,这里 logistic 是对数几率的意思,所以正确的翻译方法应该叫 对数几率回归, 所以不要以为这个东西叫 逻辑回归,逻辑回归是错误的翻译.

  5. CentOS 附加软件包

    本人初学 CentOS,安装软件与 windows 下区别很大,大部分得通过 yum install xxx .这有个问题,一方面 yum 资源有限,另一方面 yum 默认装的版本较低.比如 Cent ...

  6. Controller与View数据传递 多Model传递

    1)ViewBag变量方式 使用4个ViewBag变量进行数据传递,Data1.Data2.Data3.Data4的数据直接从数据库里调. Control中伪代码如下所示: 1 public Acti ...

  7. [python错误]UnicodeDecodeError: 'gbk' codec can't decode byte...

    出现此错误的原因是使用'gbk'解码时报错,存在一些字符不能使用gbk来解码. 首先,简体中文字符编码(ASCII扩展字符集)有下列几种:GB2312.GBK.GB18030. GB2312: 中国国 ...

  8. IIS 7 启用 gzip 静态压缩 压缩js和css文件

    搞了很久,不如nginx好弄,不知道怎么修改压缩比,也不知道怎么压缩的规则是啥(管理器上没有写),不过反正出来了,一个js文件900多K变成了100多K 1.在web.config文件里面加上: &l ...

  9. July 20th 2017 Week 29th Thursday

    The darkness is no darkness with you. 有了你,黑暗将不再是黑暗. The darkness will not be driven out if we failed ...

  10. June 20th 2017 Week 25th Tuesday

    Care and diligence bring luck. 谨慎和勤奋,带来好运气. In my opinion, care and diligence may just gurantee us a ...