首页 > 代码库 > PHP核心技术与最佳实践--笔记

PHP核心技术与最佳实践--笔记

<?phperror_reporting(E_ALL);/* php 5.3引入 延迟静态绑定 *//* php5.4引入trait,用来实现多层继承 trait Hello{} trait World{} class MyHelloWorld{ use Hello,World; } *//* php4时代 php是不支持析构函数的*//* php中数组索引是字符串,但是没有使用引号,php就将其认为是一个常量,找不到在视为变量 *//** * php中的异常必须手动 * 可以结合错误处理机制让php自动抛出异常 * set_error_handler(error_function,E_ALL|E_STRICT) //默认E_ALL   反函数 restore_error_handler(); * fetal error 或者程序结束时 register_shutdown_function           error_get_last(); *//*try {    } catch (TypeException $e) {    } catch (PDOException $e) {    } catch (Exception $ex) {    //异常统一处理}*//* 面向对象设计的原则    单一指责    接口隔离    开闭原则    替换原则    依赖倒置(上层模块不能依赖与下层、抽象不能依赖于具体) *//*php中有两套正则表达式    1、由PCRE(Perl Compatible Regular Expression)库提供的函数,以‘preg_‘开头    2、由POSIX(Protable Operating System Interface of UNIX [UNIX可移植操作系统接口],定义了基础正则表达式和扩展正则表达式)扩展提供的函数,以‘ereg_‘开头    [.!?] 不需要转义 * 断言 * 顺序肯定环视 (?=exp) * 逆序肯定环视 (?<=exp) * 顺序否定环视 (?!exp) * 逆序否定环视 (?<!exp) *  * 正则的优先级 *      \   转义符 *      () (?:) (?=) (?<=) (?!) (?<!) [] 括号和中括号 *      ? + * {n,m}    限定符 *      ^ $ dsdsdf     定位符和序列 *      | 替换 *          m|foot (m|f)oot *  * 正则表达式的常用模式 * i 忽略大小写 * m 多行匹配模式 * s 点通配模式 * U 懒惰匹配模式 * D 结尾限制 ‘abc\n‘ /abc/ /abc/D * u 支持utf-8转义表达式 [\x{4e00}-\x{9fa5}] * x 忽略表达式中的空白 *  * 效率 * filter_var($email,FILTER_VALIDATE_EMAIL) * filter_var($url,FILTER_VALIDATE_URL) *//** * 1xx 提示信息--请求以接受,继续处理 * 2xx 成功 * 3xx 重定向--要完成请求必须进行更进一步的操作 * 4xx 客户端错误 * 5xx 服务端错误 *  * 200 OK * 400 Bad Request 客户端请求语法错误,不能被服务端所理解 * 401 Unauthorize 请求未经授权 * 403 Forbidden * 404 Not Found * 500 Internal Server Error 服务器发生不可预测的错误 * 503 Server Unavailabel 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 *//** * 垃圾信息防御措施 *  ip限制 *      获取客户端ip方法 ???  *  验证码 *  Token *      createToken verifyToken *  审核机制 *//** * CURL *      $ch=curl_init() *      curl_setopt($ch,OPTIONS) *      $output=curl_exec($ch); * //   $info=curl_getinfo($ch); *      curl_close($ch) * OPTIONS : * CURLOPT_URL * CURLOPT_RETURNTRANSFER * CURLOPT_HEADER * CURLOPT_POST * CURLOPT_POSTFIELDS *      curl_setopt($ch,CURLOPT_POSTFIELDs,array(‘foo‘=>‘bar)); *      //上传文件 *      curl_setopt($ch,CURLOPT_POSTFIELDs,array(‘foo‘=>‘bar‘,‘upload‘=>‘@test.jpg‘)); * CURLOPT_HTTPHEADER *      curl_setopt($ch,CURLOPT_HTTPHEADER,array(‘HTTP_ACCEPT://...‘,‘‘)); * CURLOPT_COOKIEJAR, 设置cookie保存的文件 *      curl_setopt($ch,CURLOPT_COOKIEJAR,tempnam(‘/tmp‘,‘prefix‘)); * CURLOPT_COOKIEFILE   指定获取cookie的文件名 *      curl_setopt($ch,CURLOPT_COOKIEFIEL,‘/tmp/prefix3243234326,tmp‘); * CURLOPT_COOKIE 设置cookie *      curl_setopt($ch,CURL_COOKIE,‘name=jimmy‘); *  *//** * socket * ob */session_start();print_r($_SESSION);//$_SESSION[‘name‘]=‘jimmy‘;//setcookie(session_name(),  session_id(),  time()+3600,‘/‘);?>