php-预定义
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-预定义的更多相关文章
- C预定义宏
作用:对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数. 下面一个例子是打印上面这些预定义的宏的 ...
- C++系统预定义4个用于标准数据流对象
C++系统预定义4个用于标准数据流对象 cin cout cerr clog C++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的 ...
- android 21 隐式意图启动系统预定义activity
Intent intent=new Intent(LoginActivity.this, MainActivity.class);//显示意图启动,显示从一个activity到另一个activity, ...
- 关于标准C语言的预定义宏
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__ 当前 ...
- VC 预定义宏
列出预定义的 ANSI C和C++ Microsoft实现宏. 编译器识别预定义的ANSI C宏,并且Microsoft C++实现提供几个更多.这些宏不带参数,并且不能重定义.下面列出的某些预定义的 ...
- C/C++预定义宏
编译器识别预定义的 ANSI/ISO C99 C 预处理宏,Microsoft C++ 实现将提供更多宏.这些预处理器宏不带参数,并且不能重新定义. ANSI 兼容的预定义宏 __FILE__,__L ...
- grunt-contrib-watch 监控 JS 文件改变来运行预定义的Tasks
依赖于 GruntJs ~0.4.0 监控 JS 文件改变来运行预定义的Tasks Demo: watch: { scripts: { files: ['src/**/*.js'], tasks: [ ...
- 预定义宏,C语言预定义的宏详解
1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如 ...
- 使用预定义的action值启动系统应用
1.启动浏览器 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); //可以传一个搜索关键字,会直接显示 ...
- OS X以及iOS中与硬件环境相关的预定义宏
由于现在ARM处理器的飞速发展,从Apple A4到现在的Apple A7,从32位到64位,每一代处理器几乎都增加了不少特性,从而在架构上也有所不同.比如Apple A6引入了ARMv7S架构,增加 ...
随机推荐
- canvas image array(canvas图片阵列)
code: <!DOCTYPE html> <html> <head> <title>hehe</title> </head& ...
- 360浏览器内核控制标签meta说明
浏览器内核控制标签meta说明 背景介绍 由于众所周知的原因,国内的主流浏览器都是双核浏览器:基于Webkit的内核用于常用网站的高速浏览,基于IE的内核主要用于部分网银.政府.办公系统等网站的正常使 ...
- QQ 聊天机器人小薇 1.0.1 发布!
本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节. 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 Q ...
- 消息循环中的TranslateMessage函数和DispatchMessage函数,特别注意WM_TIMER消息
原文:http://www.cnblogs.com/xingrun/p/3583357.html TranslateMessage函数 函数功能描述:将虚拟键消息转换为字符消息.字符消息被送到调用线程 ...
- 【Udacity】误差原因——方差variance与偏差bias
偏差造成的误差-准确率和欠拟合 方差-精度和过拟合 Sklearn代码 理解bias &variance 在模型预测中,模型可能出现的误差来自两个主要来源,即:因模型无法表示基本数据的复杂度而 ...
- Raspberry 安装vstudio
Visual Studio Code微软公司推出的一款轻量级的Visual Studio风格的跨平台的IDE.当然,除了Windows,OSX,还能在树莓派上使用.目前树莓派上可用的IDE真不多,VS ...
- 关于YARN的基本结构
- android启动应用
private void openApp(String packageName) { PackageInfo pi = getPackageManager().getPackageInfo(packa ...
- C#mail发送
这里,简单封装一个函数来发送邮件,代码如下: /// <summary> /// 邮件发送辅助类 /// </summary> public class MailHelper ...
- SQL Server ->> SQL Server 2016新特性之 -- AlwaysOn的增强改进
1)标准版也开始支持AlwaysOn了,只不过限制太多,比如副节点不能只读访问和只能有一个副节点. 2)副节点(只读节点)的负载均衡,这是我认为最有用的改进 3)自动failover的节点从2个增加到 ...