摘要: 当资源资源第一次被访问的时候,http status返回200,在头部携带当前资源的描述信息,eg: 最后修改的时间:```Last-Modified``` 资源状态唯一标识:```Etag``` 资源在客户端缓存的过期时间:```Expires``` 同时浏览器会将资源缓存到cache目录,并保存文件描述信息。 当客户端第二次请求资源时,会先检查cache目录中是否含有该资源,如果有,并且还没到Expires设置的时间, 即文件还没有过期,那么此时客户端将直接从Cache目录中读取文件,而不再发送请求 如果资源已经过期,客户端会发送一次http请求到服务器,同时在header携带上次修改的时间: ```text If-Modified-Since Thu, 26 Nov 2009 13:50:19 GMT If-None-Match "8fb8b-14-4794674acdcc0" ``` ####为什么会返回上一次的信息呢? web服务器在接收到请求时,会先解析header里面的信息,然后校验头部信息。 如果该资源文件从上次时 阅读全文
posted @ 2019-05-24 11:11 青丝南开 阅读(6893) 评论(2) 推荐(0) 编辑
摘要: const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问; private: 表示私有的,只有本类内部可以使用; protected: 表示受保护的,只有本类或子类或父类中可以访问; 定义常量也可用```define```定义。 const与define在定义常量时会有如下区别: 1. const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义, const可在类中使用,define不能。 2. const定义的常量大小写敏感,而define可通过第三个参数(为TRUE表示大小写不敏感)来指定大小写是否敏感。 在运行时定义一个常量。define('TXE',100,TRUE); 3. const不能在条件语句中定义常量,而define函数可以。if($a>10){define('LE','hello');} class Demo { //定义常量【自php5.3后】,一个常量是属于一个类的,而不是某个对象的 //不可改变的 const E 阅读全文
posted @ 2019-03-18 16:35 青丝南开 阅读(2614) 评论(0) 推荐(1) 编辑
摘要: 上一篇讲到php可以通过接口是实现代码的复用。 那么这篇文章简单介绍下使用_call实现代码的复用。 _call:php的一个魔术方法,当调用类中不存在的method时,会自动调用_call. 示例代码: class One{ function method_1(){ echo '11'; } function method_2(){ echo '22'; } } class Two{ function method_3(){ echo '33'; } function method_4(){ echo '44'; } } class StaticDemo{ protected $Class = array(); public function __construct(array $class = array()){ $this->Class = $class; 阅读全文
posted @ 2019-03-15 13:05 青丝南开 阅读(436) 评论(0) 推荐(0) 编辑
摘要: call_user_func:把一个参数作为回调函数调用 用法说明: ```php call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed ``` 参数说明: 第一个参数$callback作为回调函数,其它参数都是回调函数的参数。 $parameter:传入回调$callback函数的参数,这里的参数注意不能引用传递。 下面简单例子分别说明了在不同情况下使用call_user_func: ```php //先引用,后执行 function _call($call){ echo $call++.''; echo $call++.''; return $call; } $rs = call_user_func('_call',1); var_dump($rs); //结果 //1 //2 //int(3) ``` 先执行,后引用 ```php $arg = 1; call_user_func(function ($call 阅读全文
posted @ 2019-03-15 11:10 青丝南开 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://small.aiweimeng.top/index.php/archives/51.html 在上篇文章中写到php可以使用```Trait```实现代码的复用, 下面介绍使用接口的多继承特性实现代码的复用; 示例代码: header("Content-type:text/html;charset=utf8"); interface TestOne{ function test_one(); } interface TestTwo{ function test_two($name); } //接口间多继承使用,隔开 interface TestThree extends TestOne,TestTwo{ function test_three($name); } class World implements TestThree { function test_one() { // TODO: Implement test_one() method. echo '使用 阅读全文
posted @ 2019-03-13 13:02 青丝南开 阅读(391) 评论(0) 推荐(0) 编辑
摘要: PHP没有多继承的特性。即使是一门支持多继承的编程语言,我们也很少会使用这个特性。在大多数人看来,多继承不是一种好的设计方法。 但是开发中用到多继承该怎么办呢? 下面介绍一下使用```trait```来实现php中多继承的问题。 自PHP5.4开始,php实现了代码复用的方法```trait```语法。 Trait是为PHP的单继承语言而准备的一种代码复用机制。为了减少单继承的限制,是开发在不同结构层次上去复用method, Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。 阅读全文
posted @ 2019-03-11 13:22 青丝南开 阅读(916) 评论(0) 推荐(0) 编辑
摘要: 1. __set(),__get(),__isset(),__unset()可以归之为一类,适用于私有变量的设置、取值、判断、删除的操作。 2. __construct()构造函数,__desctruct()析构函数,实例化类的时候就会产生,有一点不同,构造在最前面, 析构函数在最后面 3. 当调用class中没有定义的方法时,会报错fail error,如果class中定义了__call(),会直接调用__call()方法进行操作。 例如:$class->success('data');类中的__call方法开始执行把参数转换为数组形式array([0] => 'data'); __callStatic()方法同理,只是对没有定义的静态方法起作用。 阅读全文
posted @ 2019-03-09 08:45 青丝南开 阅读(846) 评论(0) 推荐(0) 编辑
摘要: tp5项目在nginx中默认是不支持pathinfo的,那么我们怎么配置呢? 先看下面的问题,我们按照正常的流程配置好域名后,指向public目录,重启nginx,访问时候路径报错,出现500。 解决办法: 在fastcgi.conf文件里面我们会看到如下: 阅读全文
posted @ 2019-01-08 12:42 青丝南开 阅读(1888) 评论(0) 推荐(0) 编辑
摘要: 在一些app,web中评论以及一些文章会看到一些*等,除了特定的不显示外,我们会把用户输入的一些敏感字符做处理,具体显示为*还是其他字符按照业务区实现。 下面简单介绍下业务处理。 阅读全文
posted @ 2019-01-04 09:19 青丝南开 阅读(783) 评论(0) 推荐(0) 编辑
摘要: 有时我们在请求数据接口时,会看到控制台中出现如下错误信息: XMLHttpRequest cannot load http://server.runoob.com/server.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://client.runoob.com' is therefore not allowed access. 这句话意思说不能请求到资源; 如果客户端请求其他服务器的资源时我们设置一下跨域;下面演示设置: 1.用php的方法在脚本中添加如下代码: //允许单个域名访问 阅读全文
posted @ 2019-01-03 09:42 青丝南开 阅读(1034) 评论(0) 推荐(1) 编辑