PHP 基础介绍

PHP 简介 和 开发环境配置

PHP(Hypertext Preprocessor)是全球最流行的Web程序开发语言(没有之一)。语法简单,易于学习、功能强大、灵活易用。PHP、Apache和MySQL的组合已成为Web服务器的一种配置标准。

PHP 入门教程及框架汇总

PHP基础知识

  • 基本语法

    php脚本以 <?php 开始,以 ?> 结束,默认文件扩展名 ".php":

    <?php
        //PHP 代码
    ?>
    

    在浏览器输出文本的基础指令:echo, print, 每个代码行必须以分号结束,用于把指令集区分开, 注释分 单行注释 和 多行注释。

        echo "Hello World! ";
        echo "欢迎 世界 ";
        
        // 这是 PHP 单行注释
        /*
            这是
            PHP多行
            注释
        */
    
  • 基础数据类型及操作

    • 变量(以 $符合开始,后面跟变量的名称,变量名必须以字母或者下划线开始)

      • $符号开始,后面跟变量名称
      • 变量名以字母或下划线开始,只能包含字母数字字符以及下划线(A-z、0-9和_)
      • 变量名不能包含空格,区分 大小写($y 和 $Y 是两个不同的变量)
      • 变量作用域:local、global、static、parameter
      • 局部和全局作用域,全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。
      <?php
          $x=5; // 全局作用域
          $y=10;
          function myTest() 
          { 
              $y=10; // 局部变量 
          }
          
          myTest();
          echo "变量 y 为: $y";
          function myTest0()
          {
              global $x,$y; // 函数内访问全局变量
              $y=$x+$y;
              static $z=0;
              echo $z;
              $z++;
          }   
          myTest0();
          echo $y; // 输出 15   
      ?>
      
    • 数据类型: String(字符串)、Integer(整型)、Float(浮点型)、Boolean(布尔型)、Array(数组)、Object(对象)、NUll(空值)

      通过PHP的 var_dump() 函数可以返回变量的数据类型和值

      $x = "Hello world!";  // 字符串
      $x = 5985; // 整数
      $x = -345; // 负数
      $x = 0x8C; // 十六进制数
      $x = 047;  // 八进制数
      $x = 2.4e3;
      $x = 8E-5;
      $x=true;   // 布尔值
      $cars=array("Volvo","BMW","Toyota");  // 数组
      class Car   // 声明类对象
      {
        var $color;
        function Car($color="green") {
          $this->color = $color;
        }
        function what_color() {
          return $this->color;
        }
      }
      $x=null;
      var_dump($x);
      
    • 常量 define()函数,默认为全局的

      bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
      

      三个参数:name: 必选参数,常量名称即标识符; value: 必须参数,常量的值。
      case_insensitive: 可选参数,若设置为 TRUE,则该常量大小写不敏感,默认为false。

      // 区分大小写的常量名
      define("GREETING", "欢迎访问 Runoob.com");
      echo GREETING;    // 输出 "欢迎访问 Runoob.com"
      // 不区分大小写的常量名
      define("GREETING", "欢迎访问 Runoob.com", true);
      echo greeting;  // 输出 "欢迎访问 Runoob.com" 
      
    • 字符串 (文字值变量时,需加 单引号或者双引号)

      • 并置运算符( . ), 将两个字符串值连接起来
      • strlen()函数,返回字符串的长度(字符数)
      • dtrpos()函数,查找一个字符或一段指定的文本,找到则返回第一个匹配的字符位置,否则返回FALSE。
      • mb_strlen(), 指定编码输出中文字符个数
      $txt='Hello world!'; 
      $txt2="What a nice day!"; 
      echo $txt1 . " " . $txt2; // Hello world! What a nice day!
      echo strlen("Hello world!");  // 输出 12
      echo strpos("Hello world!","world");  // 输出 6, 第一个字符的位置为 0
      echo strlen("中文字符");   // 输出 12,一个中文占 3 个字符数
      echo mb_strlen("中文字符",'utf-8');  // 输出 4
      
    • 运算符

      • 算数运算符 ( +、-、*、/、%、-x、a.b 和 intdiv() )
      • 赋值运算符 ( =、+=、-=、^=、/=、%=、.= )
      • 递增/递减运算符 ( ++x、x++、--x、x--)
      • 比较运算符 ( ==、===、!=、<>、!==、>、<、>=、<= )
      • 逻辑运算符 ( and、or、xor、&&、||、! )
      • 数组运算符 ( +、==、===、!=、<>、!==)
      • 三元运算符 ( ?: )
      • 组合比较符 ( <=> )
    • If...Else 条件语句 (if(){ }、if(){ } else {}、if() {} elseif() { }else { })

    • switch 语句

    <?php
        switch (n)
        {
        case label1:
            如果 n=label1,此处代码将执行;
            break;
        case label2:
            如果 n=label2,此处代码将执行;
            break;
        default:
            如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
        }
    ?>
    
    • 数组 array()

      • count()函数:获取数组的长度
      • 遍历数值数组
      <?php
          $cars=array("Volvo","BMW","Toyota");
          $arrlength=count($cars);
           
          for($x=0;$x<$arrlength;$x++)
          {
              echo $cars[$x];
              echo "<br>";
          }
      ?>
      
      • 关联数组,创建关联数组的方法:
      $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
      // 或者
      $age['Peter']="35";
      $age['Ben']="37";
      $age['Joe']="43";
      
      • 遍历关联数组
      <?php
          $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
           
          foreach($age as $x=>$x_value)
          {
              echo "Key=" . $x . ", Value=" . $x_value;
              echo "<br>";
          }
      ?>
      
  • 数组排序

    • sort() - 升序排列
    • rsort() - 降序排列
    • asort() - 根据关联数组的值,对数组升序排列
    • ksort() - 根据关联数组的键,对数组升序排列
    • arsort() - 根据关联数组的值,对数组降序排列
    • krsort() - 根据关联数组的键,对数组降序排列
  • PHP 超级全局变量

    • $GLOBALS 包含全部变量的全局组合数组,变量的名字就是数组的键
    • $_SERVER 包含诸如头信息(header)、路径(path)、以及脚本位置(script locations)等信息的数组。
    • $_REQUEST 用于收集HTML表单提交的数据
    • $_POST 广泛应用于收集表单数据,在HTML标签的指定该属性:"method="post""
    • $_GET 广泛应用于收集表单数据,在HTML标签的指定该属性:"method="get"
    • $_FILES
    • $_ENV
    • $_COOKIE
    • $_SESSION
  • 函数

    • 内建函数,超1000个 PHP参考手册
    • 创建 PHP 函数(函数名应能提示它的功能,以字母或者下划线开头)
    • 添加函数,为函数添加更多功能,添加参数,参数类似变量
    • 返回值 -- return语句
  • PHP魔法变量

    • LINE :文件中的当前行号。
    • FILE :文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
    • DIR : 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
    • FUNCTION :返回该函数被定义时的名字(区分大小写)。
    • CLASS : 返回该类被定义时的名字(区分大小写)。
    • TRAIT : Trait 名包括其被声明的作用区域
    • METHOD : 返回该方法被定义时的名字(区分大小写)。
    • NAMESPACE : 当前命名空间的名称(区分大小写)。
  • 命名空间(namespace)

    • 解决以下两类问题:
      • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
      • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
    • 定义命名空间:通过关键词 namespace 来声明,如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
    < ?php  
        namespace MyProject1;  
        // MyProject1 命名空间中的PHP代码  
         
        namespace MyProject2;  
        // MyProject2 命名空间中的PHP代码    
         
        // 另一种语法
        namespace MyProject3 {  
         // MyProject3 命名空间中的PHP代码    
    }  
    ?>
    
    • 子命名空间,命名空间的名字可以使用分层次的方式定义

      <?php
          namespace MyProject\Sub\Level;  //声明分层次的单个命名空间
          
          const CONNECT_OK = 1;
          class Connection { /* ... */ }
          function Connect() { /* ... */  }
      ?>
      
  • PHP 面向对象

    对象的三个主要特征:

      - 对象的行为:可以对 对象施加那些操作
      - 对象的形态:当施加那些方法是对象如何响应
      - 对象的表示:具体区分在相同的行为与状态下有什么不同
    

    面向对象内容:类、对象、成员变量、成员函数、继承、父类、子类、多态、重载、抽象性、封装、构造函数、析构函数。

    <?php
        class phpClass {
          var $var1;
          var $var2 = "constant string";
          
          function myfunc ($arg1, $arg2) {
             [..]
          }
          [..]
        }
    ?>
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容