1,Jpgraph,
2,文件系统
文件的操作步骤:打开文件->操作文件->关闭文件
- 打开文件fopen(filename,mode)
- 关闭文件fclose(resource)
- 读取文件
- a,读取整个文件
- int readfile(filename);不需要打开关闭文件,不需要echo/print输出语句
- array file(filename),将文章内容按照行放到数组中,包括换行符
- string file_get_contents(filename,[offset,maxlen]);读取内容并放到字符串中
- b,读取一行数据
- string fgets(handle[,length]),读取一行
- string fgetss(handke[,length]),读取一行,并过滤掉html和php标记
- c,读取一个字符
- string fgetc(handle);
- d,读取任意长度字符
- fread(handle, length);
- a,读取整个文件
- 写入文件
- int fwrite(handle,string[,legth]);
- int file_put_contents(filename,data[,flags]);//这个最常用,FILE_APPEND,LOCK_EX独占锁定,FILE_USE_INCLUDE_PATH,他依次调用fopen,fwrite,fclose
- 操作文件
- bool copy(path1,path2);//将文件从path1复制到path2
- bool rename(name1,name2);//将name1重命名为name2
- bool unlink(filename);//删除文件
- fileatime(filename);//最后一次访问时间
- filemtime(filename);//最后一次修改时间
- filesize(filename);//文件大小
3,目录操作
- 处理过程 打开目录->浏览目录->关闭目录
- 打开目录,如果不存在,则报错,打开文件,如果文件不存在,则自动创建一个新文件 resource opendir(path);返回目录指针
- 关闭目录 void closedir(resource handle);
- 浏览目录 array scandir(dir);//浏览目录
- 操作目录
- bool mkdir(path);//新建目录
- bool rmdif(path);//删除目录,目录必须是空的
- string getcwd();//获取当当前目录
- feof(handle);//函数判断指针是否指向文件尾
- move_upload_file(filetmpname,filename);上传文件,多文件上传时,用数组命名多文件即可,然后根据$_FILES['filename'][name]获取名称[tmp_name]获取临时名称
4,php面向对象操作
- 类中的常量的调用方法类名::常量名
- 类的构造方法__construct(mixed args[],...);
- 析构方法 void __destruct(); //php可以自动回收,一般不需用手动创建析构方法
- 对象克隆 1,可以直接调用clone方法,2,可以在类中声明__clone()方法,用来声明对象有属于自己的成员变量值
- 对象比较,连个等号比较两个对象的内容,3个等号,比较对象的引用地址,克隆的地址不一样,内容一样
- 对象类型检测 A instanceof B,检测A是否是B类
- 魔术方法,即以__开头的方法,目前有__contruct(),__destruct(),__clone(),
- __set()和__get(),当程序试图写入一个不存在或者不可见的成员变量时,会执行__set()方法,包含两个参数,分别表示变量名称和值,均不可省略
- 当程序试图调用一个未定义或者不可见的成员变量时,执行__get()方法来获取值,只有一个参数,即调用的变量名
- 两者均可以通过isset()方法来判断是否存在,如果存在,进行下一步操作,不存在,进行另外一步操作
- __call(方法名,方法参数数组)方法,当程序试图调用不存在或者不可见的成员方法时,则调用__call方法。
- __sleep()和__wakeup()方法,使用serialize()函数可以实现序列化对象,就是将对象中的变量全部保存下来,对象中的类则只保存类名,在使用sericlize()函数时,如果实例化对象包含sleep()方法,则会先执行sleep方法,目的是关闭对象可能具有的数据库连接等类似的善后工作
- unserialize()函数可以还原一个被serialize()函数序列化的对象,__wakeup方法则是回复在序列化可能丢失的数据库连接等相关工作
- __tostring()方法,当echo和print输出对象时,将对象转化为字符串,注意,输出时中间不能加任何多余的字符。
- __autoload()方法,在指定路径下自动查找和该类名称相同的文件,如果找到,程序继续执行,如果没有找到,则报告错误
book.class.php <?php class book{ public $name; public function __construct($c){ $this->name=$c; } public function __toString(){ return $this->name; } } index.php <?php function __autoload($classname){ $classpath = $classname.'.class.php'; if(file_exists($classpath)){ include_once($classpath); } else{ echo 'directory is wrong'; } } $b = new book('php programing'); echo $b; ?>
- 面向对象的应用,中文字符的截取
1,英文字符可以用substr()来实现,中文的话,容易出现乱码,因为两个字符表示一个汉字
class Msubstr{ public function Csubstr($str,$start,$len){ $strlen = $len;//获取字符串的总长度 for($i=0;$i<$strlen;$i++){ if(ord(substr($str,$i,1))>0xa0){ $temstr .= substr($str,$i,2); $i++; } else{ $temstr .= substr($str,$i,1); } } return $temstr; } }
php面向对象
5,php加密技术
- crypt(),md5()加密,均为不可逆加密
6,php解析xml语法
- 有三种,xml语法解析函数,domxml函数,simplexml函数
- simplexml函数的用法,获取对象
- $xml = simplexml_load_file('testxml.xml');//加载文件到内存中
- $xml = simplexml_load_string('testxml.xml');//加载字符串到内存中
- $xml = simplexml_load_data('testxml.xml');//将一个使用DOM函数创建的domdocument对象导入到内存中
- 遍历元素
- foreach($xml->Children() as $layer_one){}
- foreach($layer_one->attributes() as $name=>$v){}
- $xml[name][0]->节点值[属性值];均可以输出
- 修改值,$xml[name][0]->节点值[属性值]='1';
- iconv()函数是转换编码函数,iconv(源编码,目标编码,字符串);
- 保存修改后的xml文档
- $modi = $xml->asXML();
- file_put_contents('testxml.xml',$modi);
- 用DOM来创建xml文档