protected
private
1
静态方法和变量调用
一般情况下在对文件进行操作的时候需要先判断文件是否存在,PHP中常用来判断文件存在的函数有两个is_file与file_exists.
$filename = './test.txt';
if (file_exists($filename)) {
echo file_get_contents($filename);
}
如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件。
$filename = './test.txt';
if (is_file($filename)) {
echo file_get_contents($filename);
}
更加精确的可以使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写。
$filename = './test.txt';
if (is_writeable($filename)) {
file_put_contents($filename, 'test');
}
if (is_readable($filename)) {
echo file_get_contents($filename);
}
正则表达式
\ 转义字符
^ 仅在作为第一个字符(方括号内)时,表明字符类取反
- 标记字符范围
HP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
//单例模式
class Car {
private function __construct() {
echo 'object create';
}
private static $_object = null;
public static function getInstance() {
if (empty(self::$_object)) {
self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
}
return self::$_object;
}
}
//$car = new Car(); //这里不允许直接实例化对象
$car = Car::getInstance(); //通过静态方法来获得一个实例
经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)
静态属性不允许对象使用->操作符调用。
静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。
默认都为public,外部可以访问。一般通过->对象操作符来访问对象的属性或者方法,对于静态属性则使用::双冒号进行访问。当在类成员方法内部调用的时候,可以使用$this伪变量调用当前对象的属性。
isset() 函数用于检测变量是否已设置并且非 NULL。
PHP具有很多异常处理类,其中Exception是所有异常处理的基类。
Exception具有几个基本属性与方法,其中包括了:
message 异常消息内容
code 异常代码
file 抛出异常的文件名
line 抛出异常在该文件的行数
其中常用的方法有:
getTrace 获取异常追踪信息
getTraceAsString 获取异常追踪信息的字符串
getMessage 获取出错信息
PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被执行。
当代码中使用了try catch的时候,抛出的异常会在catch中捕获,否则会直接中断。
异常抛出throw
使用try catch ,并且在catch中捕获异常。否则直接中断
try{
//可能出现错误或异常的代码
//catch表示捕获,Exception是php已定义好的异常类
} catch(Exception $e){
//对异常处理,方法:
//1、自己处理
//2、不处理,将其再次抛出
}
1.PHP使用unlink函数进行文件删除。
2.删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。
3.如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件
与读取文件对应,PHP写文件也具有两种方式,最简单的方式是采用file_put_contents。
也可采用fwrite进行文件写入。
filesize函数可以取得文件的大小,文件大小是以字节数表示的。
PHP文件系统之取得文件的修改时间
fileowner:获得文件的所有者
filectime:获取文件的创建时间
filemtime:获取文件的修改时间
fileatime:获取文件的访问时间
PHP中常用来判断文件存在的函数有两个is_file与file_exists.
如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,
is_file是确切的判断给定的路径是否是一个文件。
在文件是否存在的基础上,
is_readble是否可读
is_writeable判断文件是否可写。
php读取文件
file_get_contents,将整个文件全部读取到一个字符串中,
使用fopen,fgets,fread等方法,
fgets可以从文件指针中读取一行,
freads可以读取指定长度的字符串。
使用fopen打开的文件,
最好使用fclose关闭文件指针,以避免文件句柄被占用。
preg_match只能匹配一次结果,
匹配所有的结果preg_match_all可以循环获取一个列表的匹配结果数组。
preg_match用来执行一个匹配,可以简单的用来判断模式是否匹配成功,或者取得一个匹配结果,他的返回值是匹配成功的次数0或者1,在匹配到1次以后就会停止搜索。
贪婪模式:在可匹配与可不匹配的时候,优先匹配
懒惰模式:在可匹配与可不匹配的时候,优先不匹配
常用元字符:
\ 一般用于转义字符
^ 断言目标的开始位置(或在多行模式下是行首)
$ 断言目标的结束位置(或在多行模式下是行尾)
. 匹配除换行符外的任何字符(默认)
[ 开始字符类定义
] 结束字符类定义
| 开始一个可选分支
( 子组的开始标记
) 子组的结束标记
? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
* 量词,0 次或多次匹配
+ 量词,1 次或多次匹配
{ 自定义量词开始标记
} 自定义量词结束标记
正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。
经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),
模式中包含分隔符,则分隔符需要使用反斜杠(\)进行转义。
如果模式中包含较多的分割字符,建议更换其他的字符作为分隔符,也可以采用preg_quote进行转义。
分隔符后面可以使用模式修饰符,模式修饰符包括:i, m, s, x等,
例如使用i修饰符可以忽略大小写匹配:
PHP中使用PCRE库函数进行正则匹配,
比如上例中的preg_match用于执行一个正则匹配,
常用来判断一类字符模式是否存在。
对象比较::当同一个类的两个实例的所有属性都相等时,比较运算符==进行判断
当需要判断两个变量是否为同一个对象的引用时:可以使用全等运算符===进行判断。
对象复制:可以通过关键字clone来复制一个对象,这时__clone方法会被调用
对象序列化:可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,
然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。