zoukankan      html  css  js  c++  java
  • php入门

    初学者学习路线:
    1 html、css和js
    2 php基本语法
    3 php与html结合,简单动态页面
    4 数据库MySQL
    5 面向对象编程、MySQL优化、一些模板和框架
    6 全站

    PHP(超文本预处理器),一种通用开源脚本语言

    静态网站:没有数据交互的网站,不支持数据传输的

    web服务器端口默认是80
    myslq服务器端口默认是3306
    ftp端口默认是21

    前台:浏览者看到的页面
    后台:管理员看的页面,后台用来操作数据,前台用来显示数据

    php优点

    1.跨平台,能在windows运行,也能在linux上运行
    2.开源
    3.语法简单,入门快
    4.快速地开发网站

    php脚本在服务器上执行,然后将纯html结果发送回浏览器

    修改host文件时可能因为权限问题导致修改不成功,把它拖到桌面修改后再放回去就好了

    语法

    • php脚本可放在文档中任何位置,以<?php开始,以?>结束
    • js可省略分号,但php不可省,单行注释和多行注释都与js的相同

    变量

    • 变量必须以$开头,区分大小写,没有变量的声明,创建的时候必须初始化(所以不用声明该变量的数据类型,php 会根据变量的值,自动把变量转换为正确的数据类型)
    • 括号中的变量,双引号会解析变量,单引号则原样输出,所以双引号效率没有单引号高
    $x = abc;
    echo "text $x text"; //text abc text
    echo "text$xtext"; //报错,Undefined variable: xtext
    echo "text{$x}text"; //textabctext
    echo 'text $x text'; //text $x text
    echo 'text {$x} text'; //text {$x} text
    

    除了单双引号,还有字界符声明,用于输入非常大段的字符串

    • php有四种不同的变量作用域,localglobalstaticparameter
    • 和js一样,函数外定义的变量为全局变量,函数内定义的为局部变量,全局变量可以被脚本中的任何部分访问,局部变量只能在函数内使用,但php函数内访问全局变量要使用global关键字,
      php将所有全局变量储存在一个名为$GLOBALS[index]数组中,此数组可在函数内访问也可直接用来更新全局变量
        $x = '我是一个全局变量';
        /*
        function(){
            global $x;
            echo $x;
        }
        f();
        */
        function f(){
            echo $GLOBALS['x'];
        }
        f();
    
    • 局部变量在函数执行完毕时被销毁,若想将其保存下来,定义变量时加上static即可

    可变变量即变量的变量

    $n = 'num';
    $num = 'number';
    echo $$n; //number
    

    变量引用,变量传递是值传递,加上地址符后就成了引用传递

    $x = 1;
    $y = &$x;
    $y = 2;
    echo $x,$y;
    

    输出

    • 两种基本输出方式:echo和print,echo输出速度快于print
    echo '<p>输出','多个','字符串</p>'; //可以输出一个或多个字符串
    print '只能输出一个字符串'; //只允许输出一个字符串,返回值总为 1
    

    数据类型

    • php数据类型有string(字符串)、int(整型)、float(浮点型)、boolean(布尔型)、array(数组)、object(对象)、NULL(空值)和resource(资源)
      字符串由单引号或双引号括起来的字符序列
      整型为整数,可用八进制(0)、十进制或十六进制(0x)表示,var_dump()函数判断变量的数据类型与长度并输出其值,该函数有输出功能
      浮点型为小数或指数形式
      布尔类型为true或false
      NULL表示变量没有值,可通过设置变量值为NULL来清空数据
      主要有三种情况会产生null:
      1 通过赋值明确指定
      2 一个变量没有任何值
      3 使用unset()函数将变量销毁
      empty()会判断传入的变量,若为fales或null,则返回true
      isset()可传入一个或多个变量,只要有一个为null,则返回false

    is_*系列函数可判断数据类型,is_int、is_bool、is_float、is_string、is_array、is_object、is_null、is_resource、is_numeric、is_callable,是此类型则返回true,否则false

    强制类型转换有三种方式:
    1 这三个函数intval()、floatval()、strval()
    2 变量前加上类型,$n = (int)12.6
    3 使用settype()函数直接改变变量本身,settype($n,'string');

    常量

    常量是全局的在整个脚本都可使用,被定义后不可被改变,常量名不需要加$修饰符,常量的定义使用define()函数

    //define(name,value,boolean),name为常量名,value为常量值,第三个参数可选,true为不区分大小写,默认为false
    define('X','abc');
    echo X; //函数内访问全局变量需要加global关键字,但常量可直接访问
    

    defined()主是是为了防止其他人绕过安全检查文件,传入常量,如果常量定义了就返回true,否则返回false

    字符串变量

    并置运算符一个点,可把两个字符串拼串起来,而js使用“+”或concat()方法
    strlen()函数获取字符串长度
    strpos()函数获取字符串第一次出现的位置(类似js的indexOf()方法),未找到匹配则返回false

    $a = 'abc';
    $b = '123';
    echo strlen($a.$b),'<br>'; //6
    echo strpos('abcde','cd') //2
    

    运算符

    +、-、、/、%、=、+=、-=、=、/=、%=、自增自减和常规的一样,取反-变为相反数(-x),并置.连接两个字符串(a.b)
    php7+版本新增整除运算符intdiv(),intdiv(10,3)结果为3

    关系(比较)运算符亦相同,有=和!,100 == '100'为true,!= 等同于 <>

    逻辑运算符,与或非异或(&&、||、!、xor),php逻辑的与和或都有两种形式and和&&,or和||,作用相同仅优先级不同,优先级从高到低为:
    &&、||、and、or

    $a = 3;
    $b = false;
    $c = $a or $b;
    var_dump($c);          // 这里的 $c 为 int 值3,而不是 boolean 值 true,这里不太清楚
    $d = $a || $b;
    var_dump($d);
    

    异或xor是两个值有且仅有一个为true才返回true

    数组运算符
    这个不太明白...

    条件语句

    原理一样,但注意些elseif和else if
    switch(n){...}对表达式n进行计算再与每个case的值进行比较,case值可为字符串

    数组

    php中array()函数用于创建数组,php中有三种数组:数值数组(键为数组)、关联数组(带有指定键,每个键关联一个值)和多维数组
    数值数组创建的两种方式:

    $fruits = array('litchi','longan','watermelon'); //自动分配id键,id键总是从0开始
    
    $colors = array();
    $colors[0] = 'red'; //手动分配id键
    $colors[1] = 'orange';
    

    count()函数获取数组长度

    echo count($fruits);
    //遍历数值数组
    for($i = 0; $i < count($fruits); $i++){
        echo $fruits[$i],'<br>';
    }
    

    关联数组是使用你分配给数组的指定的键的数组,创建方式有两种:

    $person = array('name'=>'Sam','age'=>'18','job'=>'singer');
    //或者
    $person['name'] = 'Sam';
    $person['age'] = '18';
    $person['job'] = 'singer'; 
    //遍历
    foreach($person as $k=>$v){
        echo $k.':'.$v,'<br>';
    }
    

    数组中元素可按字母或数字顺序进行升降序,会直接改变原数组
    sort()升序
    rsort()降序
    ksort()根据关联数组的,对数组升序
    asort()根据关联数组的,对数组升序
    krsort()根据关联数组的,对数组降序
    arsort()根据关联数组的,对数组降序

    超级全局变量

    超级全局变量在php 4.1.0之后被启用, 是php系统中自带的变量,这几个超级全局变量在一个脚本中全部作用域都可用
    $GLOBALS ,包含全部全局变量的数组
    $_SERVER ,包含头信息、路径及脚本位置等信息的数组,此数组中项目由Web服务器创建,不能保证每个服务器都提供全部项目
    $_REQUEST、$_POST、$_GET、$_FILES、$_ENV、$_COOKIE、$_SESSION

    函数

    php函数不可重载,也就是定义两次的话会报错

    魔术常量

    有8个魔术常量的值随着它们在代码中的位置改变而改变
    LINE :代码当前行
    FILE :文件完整路径和文件名,绝对路径
    DIR :文件所在目录,等价于dirname(FILE)
    FUNCTION :返回函数定义时的名字(区分大小写)
    CLASS :返回类定义时的名字(区分大小写)
    TRAIT :不清楚
    METHOD :返回类中方法定义时的名字(区分大小写)
    NAMESPACE :命名空间的名称(区分大小写)

    命名空间

    解决的问题:一是用户编写的代码与php内部的类、函数、常量或第三方类、函数、常量的名字发生冲突,二是为很长的标识符起别名
    默认情况,所有常量、类和函数都放在全局空间下,若使用命名空间,则使用namespace关键字来声明

    <html> //致命错误,命名空间必须是程序第一条语句!
    namespace MyProject { 
    // ...代码...
    }
    namespace { //全局空间
    
    }
    

    声明命名空间前唯一合法的代码是用于定义源文件编码方式的declare语句
    declare(encoding='UTF-8');

    面向对象

    面向对象程序设计(OOP),如当初学java时提到的,类是创建对象的模板,特征通过属性来刻画,功能通过方法来实现

    class Person{
      var $name = 'Sam'; //成员变量使用var声明
      var $age;  //可仅声明也可初始化
      function study(){
            echo $this->name,' is learning...'; //$this代表当前对象
      }
    }
    $p = new Person();
    $p->study();
    

    对象的创建仍是new但变量或方法的访问不是用点,而是->

    构造方法是为了给对象的数据(属性)进行初始化

    class Person{
      var $name;
      var $age;
      function __construct($name,$age){ //构造方法
        $this->name = $name;
        $this->age = $age;
      }
    
      function study(){
        echo $this->name,' is learning...';
      }
    }
    $p = new Person('May','30');
    $p->study();
    

    析构函数(destructor)与构造函数相反,对象结束生命时,系统将自动执行析构函数

    class Person{
      var $name;
      var $age;
      function __construct($name,$age){ //构造方法
        $this->name = $name;
        $this->age = $age;
      }
    
      function study(){
        echo $this->name,' is learning...';
      }
    
      function __destruct(){
        echo  __CLASS__.'的对象已销毁...';
      }
    }
    $p = new Person('May','30');
    $p->study();
    

    访问控制

    php对属性或方法的访问控制是通过在前面添加关键字实现
    public:类成员可在任何地方被访问
    protected:只能在类或子父类中访问,创建的实例对象都不能对其访问
    private:只能在本类中访问
    类属性必须定义为public、protected或private之一,用var则被视为public
    类方法可定义为public、protected或private,不写则默认为public

  • 相关阅读:
    linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top
    Linux vmstat命令实战详解
    dstat 性能监测工具
    sysstat 工具
    Linux命令详解----iostat
    Linux CPU实时监控mpstat命令详解
    Linux Top 命令解析 比较详细
    Linux统计/监控工具SAR详细介绍
    ubuntu 添加用户到已存在的组
    Ubuntu 14.04 使用速度极快的Genymotion 取代蜗牛速度的原生AVD模拟器
  • 原文地址:https://www.cnblogs.com/Grani/p/10091130.html
Copyright © 2011-2022 走看看