学习php记录《九》

1:命名空间简述: 其实就是java中的package

2:异常处理。

抛出一个异常:

<?php
    function div($a){
        if(!$a){
            throw new Exception("cannot div 0");
        }
    }    
//try catch

try{
    ..something
}catch(Exception $e){
    echo ‘Caught exception ‘, $e->getMessage(), "\n";
}

echo ‘hello world‘;

在编程过程中,尽量少使用try catch。 因为既然知道有这个出错的可能,那就该把他避免了,而不是容许他出错,再解决。

直接throw掉是比较好,这是在之前某个java代码的优化中看到的。在这里应该也是同样适用。

3:生成器:generator

他是用来做对象迭代。

在foreach的代码块中如果要迭代一组数据,你可能需要在内存中创建一个数组,这样会消耗你的内存并且占据处理时间。

而generator函数,通过yield关键字解决这个问题。

写一个简单的例子:

<?php

function one_to_three(){
    for($i =1;$i<=3;$i++){
        yield $i;
    }
}

$one_to_three = one_to_three();

foreach($one_to_three as $value){
    echo "$one_to_three,\n";
}

输出的结果就是:

1

2

3

generator做的工作就是每次通过yield把每次的数据保存一下,然后你遍历的时候拿出来用。 你可以在yield后面定义你想要的数据格式。

4:引用 reference

引用传递。这样该函数就可以修改其参数的值。

<?php
function foo(& $s){
    $s++;
}

$a = 5;

foo($a);
//$a = 6 now
?>

注意:!只有在定义函数时加引用的符号&,调用的时候则不需要加!

解绑引用使用:unset($a);

5:常用的预定义变量

  • 超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
  • $GLOBALS — 引用全局作用域中可用的全部变量
  • $_SERVER — 服务器和执行环境信息
  • $_GET — HTTP GET 变量
  • $_POST — HTTP POST 变量
  • $_FILES — HTTP 文件上传变量
  • $_REQUEST — HTTP Request 变量
  • $_SESSION — Session 变量
  • $_ENV — 环境变量
  • $_COOKIE — HTTP Cookies
  • $php_errormsg — 前一个错误信息
  • $HTTP_RAW_POST_DATA — 原生POST数据
  • $http_response_header — HTTP 响应头
  • $argc — 传递给脚本的参数数目
  • $argv — 传递给脚本的参数数组

6:预定义接口中

序列化接口

class A implements Serializable{}

时间: 2024-12-19 05:44:39

学习php记录《九》的相关文章

我的MYSQL学习心得(八)

我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 这一篇<我的MYSQL学习心得(七)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (

C++基础学习教程(八)

转载请注明出处:http://blog.csdn.net/suool/article/details/38300117 引入 在进行下一步的学习之前,我们需要厘清几个概念. RAII 首先介绍一个编程习语,"RAII"(ResourceAcquisition Is Initialization,资源获取即为初始化),他描述了利用构造函数\析构函数,并在函数返回时自动析构的机制.简言之,RAII意为构造函数获取一种资源;打开一个文件,一个网络连接,或仅仅是从某I/O流中复制一些标志.这种

我的MYSQL学习心得(八) 插入 更新 删除

这一篇<我的MYSQL学习心得(八)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition) INSERT INTO SELECT 在SQLSERVER里也是支持的 table_name1指定待插入数据的表:column_list1指定

学习工作记录五

学习工作记录 这是第八周.第七周的合在这里一起写了,主要就是考试,改论文,看spring相关内容.改论文该得心态有点崩. 一 . 文献阅读 没有阅读,主要是调研. 二 . 项目进展 1.环境配置成功,学习如何搭环境以及配置spring. 三 .工作内容 1.这周任务完成情况 任务 完成情况 备注 论文两篇 未完成 调研了许多论文,没细看 掌握spring 未完成 怎么可能完成,我怎么定这么脑残的目标 数值分析自学完成"插值"一章 未完成 进入新篇章了,我该加快进度了 <Acade

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

Python学习系列(八)( 面向对象基础)

 Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类本身. 2,类的方法:对象也可以使用属于类的函数来具有功能,这样的函数称之为类的方法.域和方法合称为类的属性.类使用class关键字创建,类的属性被列在一个缩进块中. 3,self:类的方法与普通的函数只有一个特别的区别----他们必须有一个额外的第一个参数名称,但是在调用的时候不能为其赋值,Pyt

舌尖上的安卓(android触控事件机制学习笔记录)

对于一个"我们从来不生产代码,我们只是大自然代码的搬运工"的码农来说.对android的触控机制一直是模棱两可的状态,特别是当要求一些自定义的控件和androide的自带控件(比如ViewPager,ListView,ScrollView)高度嵌套在一起使用时. 花了点时间梳理了下,做个笔记.对于一个触控的事件从用户输入到传递到Actigvity到最外层的Viewgroup在到子View,中间过程还可能穿插多个Viewgroup,android在ViewGroup提供了3个方法来控制流

django book学习问题记录

—————————————————————————————————— 位置:第五章<模型> 问题描述: >>> p1 = Publisher.objects.create(name='Apress', ... address='2855 Telegraph Avenue', ... city='Berkeley', state_province='CA', country='U.S.A.', ... website='http://www.apress.com/') >

Servlet学习笔记(八)—— 自定义过滤器的编写改进:自定义实现FilterChain

笔记六中实现了三种过滤器:字符编码过滤.登录权限过滤.敏感词过滤,但是有个缺陷就是,限定了过滤顺序,而不能实现先进行request过滤,最后response过滤,并且中间几项过滤的顺序不能动态改变.所以这里做个改进,实现一个过滤顺序的FilterChain. 多个Filter的执行顺序在这篇博文中得到很仔细的讲解,总结一点,多个过滤器的执行顺序是根据web.xml中不同<filter-mapping>的顺序来先后执行的,比如: <?xml version="1.0"

汇编入门学习笔记 (八)—— 转移指令

疯狂的暑假学习之  汇编入门学习笔记 (八)--  转移指令 參考: <汇编语言> 王爽 第9章 能够改动ip或者同一时候改动cs和ip的指令统称为转移指令. 8086CPU转移行为分为: 段内转移:仅仅改动ip 段间转移:同一时候改动cs和ip 段内转移按ip改动的范围可分为: 短转移:ip改动范围 -128~127 近转移:ip改动范围 -32768~32767 转移指令分为: 无条件转移指令.如 jmp 条件转移指令 循环指令.如 loop 过程. 中断. 1. offset,nop指令