毕业设计 之 五 PHP语法学习笔记

毕业设计 之 四 PHP语法学习笔记


做者:20135216
平台:windows10
软件:XAMPP,DreamWeaver
说明:该笔记是对网站编程语言的详细学习

1、PHP基础

0. 关于环境

  1. Apache
  2. PHP
  3. MySQL

1.关于_END标签

  1. 用途:相似于“”,用于多行输出
  2. 语法规则:
    • <<<_END……_END;
    • 注意:用于关闭标签的_END标签必须单独放在一行,这一行中不能添加其余内容(注释也不能够)
  3. 练习

2.关于局部变量

  1. 定义:在函数内建立的变量,默认状况下均为局部变量
  2. 特色:
    • 局部变量在函数返回调用处便被清空。一样地,函数外建立的变量对于函数来讲只能被非函数的代码访问(要想被函数访问,能够做为参数传递进去)
  3. 举例

3.全局变量&静态变量

  1. 定义:全部的代码都可以访问的变量为全局变量;只能在函数内部、下此函数被调用的时候仍然保存着值得变量,称为静态变量
  2. 语法
    • 全局变量:global [变量名]
    • 静态变量:static [变量名]

4.PHP类型转换

  1. (array)转换成数组
  2. (object)转换成对象

2、PHP函数

1.执行顺序

  1. 以print(abs(5-8))为例。PHP从内而外执行,先计算5-8,获得-3,而后调用abs(-3)获得3,最后将3转换为字符串再输出
  2. 返回一个数组
    • 用途:从一个函数中获得多个值
    • 举例:

2.关于引用

  1. 引用即在变量前加上&,表示一组值能够被多个函数访问或者修改
  2. 5.3之后的PHP再也不支持这样的引用。出于替代,能够在函数内声明全局变量,便于让函数访问内部变量

3.包含和请求

  1. include “[.php文件名]”:载入该文件的全部内容
  2. 进阶版本是include_once “[.php文件名]”:保证一个.php文件只会被载入一次
  3. 进阶版+是require_once “[.php文件名]”:不只有进阶版的效果,还会保证导入的是已经存在的文件

4.版本兼容

  1. 使用function_exits函数,能够检测预约义/自定义的函数是否有效
  2. 使用phpversion函数,查看代码正运行在哪一个版本的PHP上

3、PHP对象

1.对象

  1. 在使用对象以前,必须使用class关键字定义一个类。类定义包含类名(大小写敏感)、属性以及方法。
  2. 举例

2.对象克隆

  1. 举例
    $object2 = clone $object1;
  2. 目的
    • 避免两个引用指向同一个对象。克隆出来的新实例与原来的实例彻底同样

3.方法&静态方法

  1. 通常方法php

    <?php
     class User
     {
     public $name,$password;
     function get_password()
     {
     return $this->password;
     }
     }
     ?>
  2. 静态方法
    • 静态方法不能访问任何对象属性,只可以被类调用(而不是被对象)
    • 示例html

      <?php
        User::pwd_string();//::表示伴随静态方法的自调用
        class User
        {
        static function pwd_string()
        {
        echo "Please enter your password";
        }
        }
        ?>
  3. 做用域
    • public:也是变量默认的属性。
    • protected:这些属性及方法只可以被对象的类方法及其子类引用
    • private:这些成语只可以被同一个类中的方法引用,而非子类
  4. 补充
    • 类中的属性能够赋予默认值,这个默认值能够是一个数字或者字符串,但不可以是函数或者表达式
    • 类内能够定义常量linux

      <?php
        Translate::lookup();
        class Translate
        {
        const ENGLISH = 0;
        const SPANISH = 1;
        const FRENCH = 2;
        }
        static function lookup()
        {
        echo self::SPANISH;//self加上::能够直接引用常量
        }
        }
        ?>

4.继承

  1. extends操做符
    • 示例
    • 代码web

      <?php 
            $object = new Subscriber;
            $object->name = "Fred";
            $object->password = "pword";
            $object->phone = "012 345 678";
            $object->email = "fred@bloggs.com";
            $object->display();
            class User
            {
                public $name,$password;
                function save_user()
                {
                    echo "Save User code goes here";
                }
            }
            class Subscriber extends User
            {
                public $phone,$email;
                function display()
                {
                    echo "Name:" . $this->name . "<br>";
                    echo "Pass:" . $this->password . "<br>";
                    echo "Phone:" . $this->phone . "<br>";
                    echo "Email:" . $this->email;
                }
            }
        ?>
  2. parent运算符
    • 目的:当子类与父类定义了相同名字的方法的时候,子类方法将覆盖父类方法。为了访问父类方法,则可使用parent方法
    • 示例
  3. final方法
    • 用在父类的方法以前,用于防止子类覆盖父类方法

4、PHP数组

1.赋值

  1. 数组关键字
    • 用“下标=>值”的方法,将值赋给对应的下标(而不是变量)
    • 示例编程

      <?php 
        $p1 = array("Copier","Inkjet","Laser","Photo");
        echo "p1 element:" . $p1[2] . "<br>";
        $p2 = array('copier' => "Copier & Multipurpose",
                    'inkjet' => "Inkjet Printer",
                    'laser' => "Laser Printer");//这里p1与p2是不一样的数组
        echo "p2 element: ". $p2['inkjet'] . "<br>";
        ?>

  2. foreach...as循环
    • 示例windows

      <?php
        $paper = array('copier' => "Copier & Multipurpose",
                        'inkjet' => "Inkjet Printer",
                        'laser' => "Laser Printer");
        foreach($paper as $item -> $description)
            echo "$item:$description<br>";
        ?>
    • 说明
      • 当PHP遇到foreach语句时,读取数组中的第一个元素并放入as关键字后的变量中,每当控制流返回到foreach语句,下一个元素被放到as关键字中。在全部值都被使用以后,循环结束执行

2.函数

  1. is_array函数:检查变量是否为数组
  2. count函数:统计顶层元素数量。若是要知道一个多维数组到底有多少元素,可使用count($fred,1)(后面那个参数只能是0或1)
  3. sort函数:在提供的源数组上直接进行排序,而不返回排序后的新数组。该函数排序成功返回true、排序失败返回false。
    • sort($fred,SORT_NUMERIC):强制按照数值排序
    • sort($fred,SORT_STRING):强制按照字符串排序
    • PS:resort函数按照相反顺序对源数组进行排序
  4. shuffle函数:按照随机顺序排序。也是直接在源数组上排序
  5. explode函数:接受一个由单个字符(或者字符串)分割成几个独立项构成的字符串,并将这些项放入一个数组。
    • 示例数组

      <?php
        $temp = explode(' ',"This is a sentence with seven words");
        print_r($temp);
        ?>

  6. compact函数
    • 做用:经过变量及其值来建立数组
    • compact函数须要将接收的变量名用引号引发,不是由$符号开头的变量。
    • 示例浏览器

      <?php
        $j = 23;
        $temp = "Hello";
        $address = "1 Old Street";
        $age = 61;
      
        print_r(compact(explode(' ','j temp address age')));
        ?>

  7. end与reset函数
    • end函数将PHP内部指针移动到数组的最后一个元素 ;rest函数将PHP内部指针移动到数组的第一个元素
    • 好比,echo reset($fred);打印fred数组的第一个元素

5、实用PHP技术

1.printf函数

  1. 转换字符
    • %b:二进制整数
    • %c:ASCII字符
    • %o:八进制整数
    • %x:十六进制(小写)数
  2. 精确度设置服务器

    <?php
     echo "<pre>";//使得空格能显示
     printf("The result is $%15f\n",123.42/12);//将结果填充到15位
     printf("The result is $%015f\n",123.42/12);//使用0,将结果填充到15位
     printf("The result is $%15.2f\n",123.42/12);//将结果填充到15位,小数点以后精确2位
     printf("The result is $%'#15.2f\n",123.42/12);//将结果用#填充到15位,小数点以后精确2位
     ?>
     ![](http://i.imgur.com/wbkkRaN.png)
  3. 字符串填充编程语言

    <?php
     echo "<pre>";//使得空格能显示
     $h = 'Rasmus';
     printf("[%s]\n",$h);//标准格式输出
     printf("[%12s]\n",$h);//利用空格右对齐,输出长度为12
     printf("[%-12s]\n",$h);//利用空格左对齐
     $d = 'Rasmus Lerdorf';
     printf("[%12.8s]\n",$d);//右对齐,长度为12,截取8个字符
     printf("[%-12.12s]\n",$d);//左对齐,长度为12,截取12个字符
     printf("[%-'@12.10s]\n",$d);//左对齐,长度为12,用@填充
     ?>
     ![](http://i.imgur.com/R7PbWn4.png)
  4. 使用sprintf
    • 目的:将结果传递给变量而不是浏览器
    • 用法

      $hexstring = sprintf("%x%x%x",65,127,245);//以字符串形式返回RGB颜色组65,127,245的十六进制值,并将结果保存在$hexstring中

2.日期函数

  1. date函数
    • 目的:显示多种格式的日期数据
    • 格式
      date($format,$timestamp):第一个参数是一个字符串,指的是格式化标识符;第二个参数是一个Unix时间戳
    • 举例

      <?php
        echo date("l F jS , Y - H:ia",time());
        //l表示每周的日期全称
        //F表示月份
        //j表示每个月的日期
        //S表示每个月中日期的后缀
        //Y表示年份,四位数
        //H表示天天的小时,24小时制,有前导0
        //i表示分
        //a表示午前或午后
        //time()表示当前时间戳
        ?>

  2. checkdate函数
    • 目的:检查一个输入的日期是否有效
    • 用法:

3.文件函数

  1. 首先明确一点,由于编写PHP代码的时候并不知道所要应用的系统是不是大小写敏感的(好比,windows和Mac OS X系统大小写不敏感,而linux和Unix是大小写敏感的),所以要设定为大小写敏感,并将文件一概命名为小写
  2. 检测文件是否存在
    • 用法:

      if(file_exits("testfile.txt"))
            echo "File exits";
  3. 建立文件
    • 用法:
      • fopen函数参数'w'表示打开已存在文件或者建立新文件;可是打开已存在的文件会使得原有内容被删除
      • 这里我还发现了一个有意思的事情:当我不当心把_END的位置写在两个tab键以后的时候,程序会报错
  4. 从文件中读取数据
    • fgets:从文件中获取一整行数据
      • 举例:
    • fread:从文件中获取多行数据或者多行中的部分数据
      • 举例
        • 由于我这里用的是中文的“:”,而一个中文字符是4个二进制代码,因此若是只读取八个二进制码的话,引号解析不出来(就是乱码)。而后扩展到10个的话,就能够把“:”读取出来
  5. 复制文件
    • copy('[原文件]','[新文件]');
  6. 重命名文件或者目录
    • rename('[旧文件名]','[新文件名]');
  7. 删除文件
    • unlink('[原有文件]');
  8. 更新文件
    • 举例

      <?php
        $fh = fopen("exercise2.txt",'r+') or die("Failed to open file");
        $text = fgets($fh);
        fseek($fh,0,SEEK_END);
        fwrite($fh,$text) or die("Could not write to file");
      
        fclose($fh);
        echo "File 'exercise2.txt' successfully update";        
        ?>
    • 说明
      • fseek函数的第二个参数和第三个参数表示文件指针指向的具体位置。第三个参数位置有三种选择:
        • SEEK_END:移动到文件末尾
        • SEEK_CUR:将文件指针指向当前位置并在此基础上偏移给定的偏移量(向后移动)
        • SEEK_SET:将指针移动到第二个参数标识的位置
  9. 多用户访问时为文件加锁之flock函数
    • 目的:将全部用户的文件访问请求排成队列,直到程序释放了锁才解散队列
    • 注意:flock函数不为老版本的windows系统支持;此外,flock仅仅对其余调用它的进程上锁,若是修改代码在没有实现flock文件加锁的状况下进入文件并对其进行修改,此时代码所作的修改一样会覆盖处于锁定状态的进程所作的修改
    • 举例(对上段代码的改进)
      <?php
      $fh = fopen("exercise2.txt",'r+') or die("Failed to open file");
      $text = fgets($fh);
      if(flcok($fh,LOCK_EX))//排他锁,今后刻开始,其余进程不能向文件中写入和读取数据
      {
      fseek($fh,0,SEEK_END);
      fwrite($fh,$text) or die("Could not write to file");
      flock($fh,LOCK_UN);//释放排他锁,其余程序可使用该文件
      }
      fclose($fh);
      echo "File 'exercise2.txt' successfully update";
      ?>
  10. 读取整个文件
    • 函数:file_get_contents("[文件名]");
    • 补充:除了读取本地文件,还能够从internet服务器上取回一份文件,就像在浏览器张浏览该页面同样
    • 举例

      <?php
        echo file_get_contents("http://www.cnblogs.com/lwr-/p/6349948.html");   
        ?>
      • 个人Dreamweaver中没有安装flash插件,因此图片没加载出来
  11. 提交文件
    • 代码示例:

      <?php
        echo <<<_END
        <html><head><title>PHP Form Upload</title></head><body>
        <form method = 'post' action = 'exercise2.php' enctype = 'multipart/form-data'>
        Select file:<input type = 'file' name = 'filename' size = '10'>
        <input type = 'submit' value = '上传'>
        </form>
        _END;
        if($_FILES)
        {
            $name = $_FILES['filename']['name'];
            move_uploaded_file($_FILES['filename']['tmp_name'],$name);
            echo "Uploaded image '$name'<br /><img src = '$name'>";
        }
        echo "</body></html>";
        ?>
    • 效果

    • 解析
      • form表单用POST提交数据,将数据提交的目标设定为exercise2.php,并告诉web浏览器用multipart/form data的MIME类型编码
      • 表单创建后,下一行输出提示内容“Select File:”,而后须要两个输入。第一个是用于输入文本的文本框,类型定义为file,文件名为filename(宽度为10个字符)。第二个被要求的输入只用于显示“上传”按钮
      • 上传的全部文件都被放入$_FILE中;一旦程序意识到有文件被上传,从上传文件的电脑中读取的实际文件名便会被检索出来,并存储到变量$name中。
      • move_uploaded_file函数将被上传的文件从临时存储文件位置转移到一个永久存储文件的目录中;将文件原先的名字传递给该函数,一并存储到当前目录中。
      • $_FILES数组有五个值
        • $_FILES['file']['name']:上传文件的名字
        • $_FILES['file']['type']:文件的类型
        • $_FILES['file']['size']:文件的大小
        • $_FILES['file']['tmp_name']:存储在服务器上临时文件的名字
        • $_FILES['file']['error']:上传文件致使的错误代码
    • 改进
      • 主要是防止用户的恶意输入,因此对上传文件的类型进行了限制和控制
      • 代码

        <?php
          echo <<<_END
          <html><head><title>PHP Form Upload</title></head><body>
          <form method = 'post' action = 'exercise2.php' enctype = 'multipart/form-data'>
          Select a JPG,GIF,PNG,TIF file:<input type = 'file' name = 'filename' size = '10'>
          <input type = 'submit' value = '上传'>
          </form>
          _END;
          if($_FILES)
          {
              $name = $_FILES['filename']['name'];
              switch($_FILES['filename']['type'])
              {
                  case 'image/ipeg':$ext = 'jpg';break;
                  case 'image/gif':$ext = 'gif';break;
                  case 'image/png':$ext = 'png';break;
                  case 'image/tiff':$ext = 'tif';break;
                  default:$ext = '';break;
              }
              if($ext)
              {
                  $n = "image.$ext";
                  move_uploaded_file($_FILES['filename']['tmp_name'],$n);
                  echo "Uploaded image '$name' as '$n':<br>";
                  echo "<img src = '$n'>";
              }
              else
                  echo "'$name' is not an accepted image file";
        
          }
          else echo "No image has been uploaded";
          echo "</body></html>";
          ?>

参考

1.书籍

  1. 《PHP、MySQL与JavaScript学习手册(第4版)》Robin Nixon著,侯荣涛 侯硕楠 韩进 译

2.网址

  1. PHP date() 函数http://www.w3school.com.cn/php/func_date_date.asp
  2. PHP教程 http://www.w3school.com.cn/php/
相关文章
相关标签/搜索