zoukankan      html  css  js  c++  java
  • 夯实基础之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文档
  • 相关阅读:
    java 接口中的成员变量与方法
    Spring BeanPostProcessor
    MySQL更改命令行默认分隔符
    java 动态代理
    《剑指offer》:[62]序列化二叉树
    group by语法
    Mysql两种引擎
    线程池大小设置
    Synchronized及其实现原理
    CAS ABA问题
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/5473981.html
Copyright © 2011-2022 走看看