夯实基础之php学习-2提高篇

1,Jpgraph,

详见Php图形化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);
  • 写入文件
    • 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文档
原文地址:https://www.cnblogs.com/ningheshutong/p/5473981.html