PHP基础语法2
-
数组
PHP有两种数组:索引数组、关联数组。
-
函数
自定义函数
自定义函数通过将一组代码封装起来,使代码进行复用,程序结构与逻辑更加清晰
返回值
使用return关键字可以使函数返回值,可以返回包括数组和对象的任意类型,如果省略了 return,则默认返回值为 NULL。
可变函数
所谓可变函数,即通过变量的值来调用函数,因为变量的值是可变的,所以可以通过改变一个变量的值来实现调用不同的函数。经常会用在回调函数、函数列表,或者根据动态参数来调用不同的函数。可变函数的调用方法为变量名加括号。
内置函数
内置函数指的是PHP默认支持的函数,PHP内置了很多标准的常用的处理函数,包括字符串处理、数组函数、文件处理、session与cookie处理等。
内置函数str_replace可以实现字符串的替换
判断函数是否存在
经常会先使用function_exists判断一下函数是否存在。
同样的method_exists可以用来检测类的方法是否存在
-
类和面向对象
构造函数
对象实例化的时候自动调用
析构函数
如果类对象设置成了空 就自动调用了析构函数 比如$name=null;
通常被用于清理程序使用的资源
访问控制
Static静态关键字
静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。
对象继承
重载
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
对象的高级特性
1.对象比较,当同一个类的两个实例的所有属性都相等时,可以使用比较运算符==进行判断,当需要判断两个变量是否为同一个对象的引用时,可以使用全等运算符===进行判断
2.对象复制,在一些特殊情况下,可以通过关键字clone来复制一个对象,这时__clone方法会被调用,通过这个魔术方法来设置属性的值。
3.对象序列化,可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
对象引用
-
字符串操作
单引号和双引号的区别
PHP允许我们在双引号串中直接包含字串变量。
而单引号串中的内容总被认为是普通字符。
字符串的连接
PHP中用英文的点号.来连接两个字符串。
去除字符串首尾的空格
PHP中有三个函数可以去掉字符串的空格
trim去除一个字符串两端空格。
rtrim是去除一个字符串右部空格,其中的r是right的缩写。
ltrim是去除一个字符串左部空格,其中的l是left的缩写。
获取字符串的长度
php中有一个神奇的函数,可以直接获取字符串的长度,这个函数就是strlen()。
可以使用mb_strlen()函数获取字符串中中文长度。
字符串的截取
-
英文字符串的截取函数substr()
-
中文字符串的截取函数mb_substr()
查找字符串
查找字符串,我们需要用到PHP的查找字符串函数strpos();
函数说明:strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])
替换字符串
替换字符串,我们需要用到PHP的替换函数str_replace()
格式化字符串
函数说明:sprintf(格式, 要转化的字符串)
返回:格式化好的字符串
字符串的合并与分割
-
php字符串合并函数implode()
2、php字符串分隔函数explode()
字符串的转义
php字符串转义函数addslashes()
函数说明:用于对特殊字符加上转义字符,返回一个字符串
返回值:一个经过转义后的字符串
-
正则表达式
PHP中使用PCRE库函数进行正则匹配,比如上例中的preg_match用于执行一个正则匹配,常用来判断一类字符模式是否存在。
正则表达式的基本语法
略。。。。
6. 会话控制
cookie简介
Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端。多数web程序都支持Cookie的操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。
PHP通过setcookie函数进行Cookie的设置,任何从浏览器发回的Cookie,PHP都会自动的将他存储在$_COOKIE的全局变量之中,因此我们可以通过$_COOKIE['key']的形式来读取某个Cookie值。
设置cookie
1.PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:
1.name( Cookie名)可以通过$_COOKIE['name'] 进行访问
2.value(Cookie的值)
3.expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
4.path(有效路径)如果路径设置为'/',则整个网站都有效
5.domain(有效域)默认整个域名都有效,如果设置了'www.imooc.com',则只在www子域中有效
2.PHP中还有一个设置Cookie的函数setrawcookie,setrawcookie跟setcookie基本一样,唯一的不同就是value值不会自动的进行urlencode,因此在需要的时候要手动的进行urlencode。
setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
3. 因为Cookie是通过HTTP标头进行设置的,所以也可以直接使用header方法进行设置。
header("Set-Cookie:cookie_name=value");
cookie的删除与过期时间
-
setcookie('test', '', time()-1);
-
header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1));
cookie的有效路径
一般情况下,大多是使用所有路径的,只有在极少数有特殊需求的时候,会设置路径,这种情况下只在指定的路径中才会传递cookie值,可以节省数据的传输,增强安全性以及提高性能。
session与cookie的异同
cookie相对不是太安全,容易被盗用导致cookie欺骗
单个cookie的值最大只能存储4k
每次请求都要进行网络传输,占用带宽
session是将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别,PHP默认情况下session id是通过cookie来保存的,因此从某种程度上来说,seesion依赖于cookie。但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session。
使用session
在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。
session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等
默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题
删除与销毁session
1.删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。
2.删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。
3. 值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。
4. 如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。
使用session来存储用户的登录信息
用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储