1+X | php

why PHP?

什么是PHP?

php-logo

PHP是PHP:hypertext preprocessor(超文本预处理器)的缩写,是一种服务端、跨平台、html嵌入式的脚本语言,其独特的语法混合了c语言、Java语言和perl语言的特点,是一种被广泛应用的开源式的多用途脚本语言,尤其适合web 开发

PHP语言的优势?

安全性高、跨平台特性、支持广泛的数据库、易学性、执行速度快、免费、模版化、支持面向对象与过程、内嵌zend加速引擎,性能稳定快速…….

PHP的发展趋势?

由于PHP是一种面向对象的、完全跨平台的新型web开发语言,所以无论从开发者角度考虑还是从经济角度考虑,都是十分实用的。PHP语法结构简单,易于入门,很多功能只需一个函数就可以实现,并且很多机构都相继推出了用于开发PHP的IDE工具。

全球排名前50的网站前端开发语言,40%是使用PHP语言开发的,其中包括排名第一的Facebook,以及日常上网经常会用到的网站,雅虎、百度、腾讯、淘宝、新浪、hao123、天猫、搜狐等

环境配置篇

基础操作

  • 关闭Apache服务:sudo apachectl stop

  • 重启APache服务:sudo apachectl restart

修改网页目录

  • php配置文件:php.ini
  • apache配置文件:/etc/apache2/httpd.conf
  • 网页目录:/Library/WebServer/Documents
  1. 打开php服务

    打开文件``/etc/apache2/httpd.conf,将这行代码前面的#`去掉

    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. 修改项目路径(可选)

    1. 修改httpd.conf文件中的DocumentRoot改为想要的路径:
    DocumentRoot "/Users/billie/Desktop/php/Documents"
    <Directory "/Users/billie/Desktop/php/Documents">
    
    1. 创建文件/etc/apache2/users/MuyunLee.conf,并在文件中输入以下代码
    <Directory "/Users/MuyunLee/PHPWorkSpace">
     Options Indexes MultiViews AllowOverride All Require all granted # OSX 10.10 / Apache 2.4 
    </Directory>
    
    1. 找到/etc/apache2/httpd.conf文件中
    -Options FollowSymLinks Multiviews
    +Options FollowSymLinks Multiviews Indexes
    
  3. 启动apache服务器

sudo apachectl start
  1. 在编辑器中写PHP代码,网页直接输入 http://localhost/项目名/PHP代码页面,完成!

语法篇

变量

关键词: 弱类型

  • 声明变量: $符号+变量名
  • 作用域
    1. local
    2. global - 全局变量
    3. static - 静态变量,不可以在函数外部使用,在离开作用域之后,值不会丢失
    4. parameter

输出

  • echo - 可以输出一项或多项,每一项用.分隔开
  • print - 只允许输出一项,返回值总为 1
  • print_r(变量) - 用于打印变量,以更容易理解的形式展示
  • var_dump(变量) - 返回变量的数据类型和值

ps - echo输出的速度比print快,echo没有返回值,print有返回值1,两者使用时,括号可加可不加

引入

require在引入不存文件时产生一个警告且脚本还会继续执行,而include则会导致一个致命性错误且脚本停止执行

  • include
  • require
  • include_once
  • require_once
include './xx.php'; //引入其他脚本

单引号和双引号

  • ’’ : 纯字符串
  • "" : 可解析字符串中的变量

数据类型

  1. string - 字符串

    • 字符串连接运算符.
    • strlen()- 获取字符串长度
    • strpos($e,'',5)- 获取子串位置
    • strrpos($e,'',5)- 从后面开始检索
    • trim()- 去掉首位的字符串
    • ltrim()- 去掉首部的
    • rtrim()- 去掉尾部的
    • explode('',$e,3)- 按照什么来分割,需要分割的字符串,分割成几块(默认分割成尽可能多块)
    • str_split($e,3)- 需要分割的字符串,每个字符串的长度(默认是1)
  2. integer - 整型

  3. float - 浮点型

  4. boolean - 布尔型

  5. array - 数组

    • 创建一个数组:$arr=array('','');

    • 返回数组长度:count()

    • 定义关联数组:$age=array("a"=>"1","b"=>"2")

    • 遍历关联数组

      $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() - 根据关联数组的键,对数组进行降序排列
    • 数组拼接

      • implode('拼接符号',数组):把数组中的内容,拼接成字符串
  6. object - 对象

    声明一个对象:

    1. 使用class关键字声明类对象
    2. 在类中定义数据类型
    3. 在实例化的类中使用数据类型
  7. null - 空值

    NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。

    • unset(变量)可以把变量变成null
$val = (int)$value1; //转化成整型
$val = (string)$value1; //转化成字符串
$val = (bool)$value1; //转化成布尔值

常量

常量是一个简单值的标识符,该值在脚本中不能改变

声明常量:

  1. define(constant_name, mixed value, case_sensitive = true)

    • constant_name:必选参数,常量名称,即标志符
    • value:必选参数,常量的值
    • case_sensitive:可选参数,指定是否大小写敏感,设定为 true 表示不敏感。
  2. const

    const name='billie';

预定义常量: M_PI等

运算符

<?php
//四则运算符 +-*/
//逻辑运算符 !(非) &&(与) ||(或) and(与) or(或) xor(异或)
//数组运算符 +(合并) ==(比较) !=(不等) ===(全等,值和数据类型) !==(全不等)
$x = array("a" => "red", "b" => "green"); 
$y = array("c" => "blue", "d" => "yellow"); 
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
//位运算符 & | ^ << >>
//比较运算符 > < >= <= <=>(左边小返回-1,左右相等返回0,右边大返回1)
//空合并符 ??
var_dump(null??2??3); //返回从左到右数第一个不是null的值
//三目运算符
echo $a===1?'是1':'不是1';
//错误控制运算符
$e=@(1/0);
?>

注释

  • 单行: //
  • 多行: /**/

流程控制

跟js一样(差不多吧

  • 单分支:if(){}

  • 双分支:if(){}else{}

  • 多分支:if(): elseif(): else: endif;/if(){}else if(){}else{}

  • switch分支:switch(){}

    //switch
    $d = 3;
    switch($d){
      case '1':
        echo 'out';
        break;
      case '2':
        echo 'yes';
        break;
      case '3':
        echo 'out';
        break;
      default:
        echo 'you deserve it';
    }
    
  • for循环:for(){}

    for($i=0;$i<5;$i++){
      echo $i
    }
    //九九乘法表
    for($i=1;$1<10;$i++){
      for($o=1;$o<$i+1;$o++){
        echo $o.'x'.$i.'='.$i*$o.'&nbsp;';
      }
      echo '<br>'
    }
    
  • while循环:while(){} do{}while()

    $j=0;
    while($j<5){
      echo 'small';
      $j++;
    };
    do{
      echo 'small';
      $j++;
    }while($j<5);
    
  • 数组循环:foreach(){}

    $m=array('a','b','c');
    foreach($m as $value){
      echo $value;	
    }
    

超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。

  • $GLOBALS - 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
  • $_SERVER - 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目
  • $_REQUEST - 用于收集HTML表单提交的数据。
  • $_POST - 被广泛应用于收集表单数据,在HTML form标签的指定该属性:“method=“post”
  • $_GET - 被广泛应用于收集表单数据,在HTML form标签的指定该属性:“method=“get”;也可以收集URL中发送的数据
  • $_COOKIE
  • $_FILES
  • $_ENV
  • $_SESSION

函数

PHP 的真正威力源自于它的函数。

在 PHP 中,提供了超过 1000 个内建的函数。

自定义函数的关键字 - function

  • 锚点: goto
//goto anchor;
//...
//anchor:
//...	

$number = 1;
switch($number){
    case 1:
        goto one;                 //使用goto跳到one标记处
        echo "第一名";            //goto已经跳转,这条语句不执行
    case 2:
        goto two;
        echo "第二名";
    case 3:
        goto three;
        echo "第三名";
}

one:
echo " 武林第一!";
//exit;
two:
echo " 武林第二!";
//exit;
three:
echo " 武林第三!";

数字操作函数

面向对象

  • 定义类与对象实例化
  • 修饰符
  • 高阶操作

Laravel框架


2895 字