php

Php

PHP是一种通用开源服务端脚本语言,将程序嵌入到HTML文档中去执行,结果以纯HTML 形式返回给浏览器
PHP: Hypertext Preprocessor “超文本预处理器1994年由Rasmus Lerdorf创建,刚刚开始仅仅是为了要维护他本人个人网页而制作的一个简单程序(Perl语言编写),原名Personal Home PagePHP由此得名),后用C语言重新编写,改名Hypertext Preprocessor

PHP能做什么

· 生成动态页面内容

· 创建、打开、读取、写入文件

· 收集ajax数据

· 发送和接收cookie;

· 添加、删除、修改您的数据库中的数据

· 限制用户访问您的网站上的一些页面

· 加密数据

1安装

1.1配置环境

· 安装 Web 服务器Apache

· 安装 PHP;

· 安装MySQL数据库

对于初学者建议使用集成的服务器组件(如:WampServer),它已经包含了PHPApacheMysql等服务,免去了开发人员将时间花费在繁琐的配置环境过程。

WampServer下载地址:http://www.wampserver.com/

1.2 IDE安装

IDE: Integrated Development Environment (集成开发环境),推荐使用PhpStorm

PhpStorm官方下载地址:http://www.jetbrains.com/phpstorm/download/

2语法

· 默认文件扩展名是 “.php”

· 通常包含 HTML 标签和一些 PHP 脚本代码

2.1分界标识符

   <?php //开始

    //...php代码

    ?> //结束

 

2.2注释

js一样,分单行和多行注释

· 单行注释://

· 多行注释:/**/

2.3输出语句

2.3.1 echo

可以输出一个或多个字符串(字符串可以包含HTML标签),速度较快,一般用于向前端返回数据

<?php

    //输出一个字符

    echo "Hello world!<br>";

    //输出多个字符

    echo "This", " string", " was", " made", " with multiple parameters.";

?>

2.3.2 print_r

打印关于变量的信息,适用于数组、对象的打印,一般用于测试

2.3.3 var_dump

判断一个变量的类型与长度,并输出变量的数据类型和数值,一般用于测试

2.4 变量

2.4.1命名规则

·  $ 符号开始,后面跟着变量的名称($称为标识符,不属于变量组成部分)

· 只能包含字母数字字符以及下划线(A-z0-9_

· 必须以字母或者下划线字符开始

· 不能包含空格

· 区分大小写

//PHP 没有声明变量的命令。

//变量在第一次赋值时被创建:

<?php

    $txt="Hello world!";

    $x=5;

    $y=10.5;

?>

2.4.2全局变量

在函数外部定义的变量,称为全局变量,全局变量可以在任意位置访问。但php中变量的访问规则默认为不向上级查找变量,所以函数内部的变量无法直接获取全局变量。

如何访问全局变量:

2.4.2.1 $GLOBALS

格式:$GLOBALS[变量名],其中变量名不带$

<?php

    $x='global x';

    function myTest(){

        //echo $x;//报错

 

        //正确写法

        echo $GLOBALS['x'];

 

        //在函数中创建全局变量

        $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];

    }

    myTest();

    echo $y;

?>

 

2.4.2.2 global关键字

    <?php

        $x=5;

        $y=10;

        function myTest(){

            global $x,$y;

            $y=$x+$y;

        }

        myTest();

        echo $y; // 输出 15

    ?>

2.4.3局部变量

函数内部声明的变量是局部变量,仅能在函数内部访问

2.4.4超级全局变量

2.4.4.1 $GLOBALS

$GLOBALSPHP的一个包含所有全局变量的数组,可以在任意位置使用

2.4.4.2 $_SERVER

$_SERVER是一个包含了头信息(header)、路径(path)等信息的数组

2.4.4.3 $_POST / $_GET

$_POST / $_GET被广泛应用于收集表单数据,常用于ajax请求等操作

2.4.4.4 $_COOKIE

用于收集前端发送过来的cookie数据

2.4.4.5 $_REQUEST

变量包含了 $_GET$_POST$_COOKIE 的内容

2.4.4.6 $_SESSION

服务器版cookie。

2.4.4.7 $_FILES

2.5常量

2.5.1规范

· 命名规则与变量一致,但常量名不需要加 $ 修饰符。

· 常量值被定义后,在脚本的其他任何地方都不能被改变。

· 默认是全局作用域,可以在整个运行的脚本的任何地方使用。

· 常量名建议全部大写

2.5.2格式

define(name,value);

name:必选参数,常量名称,即标志符。

value:必选参数,常量的值。

define("EN_NAME", "laoxie"); 

2.6运算符

· 算术运算符

+, -, *, /, %;

取反

· 赋值运算符

· 递增/递减运算符

· 比较运算符

等于:x == y;

恒等于:x === y;

不等于:x != y x <> y

不恒等于:x !== y;

大于:x > y;

小于:x < y;

大于等于:x >= y;

小于等于:x <= y 

· 逻辑运算符

与:x and yx && y

或:x or yx || y

异或:x xor y;

非:!x;

· 三元运算符
格式:expr1 ? expr2 : expr3。

2.7条件语句

javascript一致

· if语句

· switch语句

 

2.8循环语句

javascript一致

· while

· do…while

· for

 

3数据类型

· String(字符串)

· Integer(整型)

· Float(浮点型)

· Boolean(布尔型)

· Array(数组)

· Object(对象)

· NULL(空值)

3.1 String

3.1.1 并置运算符‘.

<?php

    $txt1="你是我的小呀小苹果";

    $txt2="怎么爱你都不嫌多";

    echo $txt1 . ", " . $txt2;

?>

3.1.2 strlen()

获取字符串长度,得到的字符的字节数

3.1.3 strpos()

查找某个字符在字符串中的索引,如果未找到匹配,则返回 false。
strpos("Hello world!","world");//=>6

3.2 Array

数组是一个能在单个变量中存储多个值的特殊变量。

3.2.1类型

· 数值数组 - 带有数字索引值的数组

· 关联数组 - 带有指定的键的数组,每个键关联一个值

· 多维数组 - 包含一个或多个数组的数组

3.2.2创建数组

使用array()函数创建

//数值数组

$cars=array("Volvo","BMW","Toyota");

 

//关联数组

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

3.2.3数组方法

1. count() 获取数组长度

2. in_array() 判断某个值是否存在数组中

3. array_slice() 从数组中取出一段

3.2.4遍历数组

3.2.4.1 for

一般用于遍历数值数组

3.2.4.2 foreach

一般用于遍历关联数组

<?php

    //遍历数值数组:for循环

    $cars=array("Volvo","BMW","Toyota");

    $arrlength=count($cars);

    for($x=0;$x<$arrlength;$x++){

        echo $cars[$x] . "<br>";

    }

 

    //遍历关联数组:foreach..as

    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

    foreach($age as $x=>$x_value){

        echo "Key=" . $x . ", Value=" . $x_value;

        echo "<br>";

    }

?>

3.2.5数组排序

· sort() 对数组进行升序排列

· rsort() 对数组进行降序排列

· asort() 根据关联数组的值,对数组进行升序排列

· ksort() 根据关联数组的键,对数组进行升序排列

· arsort() 根据关联数组的值,对数组进行降序排列

· krsort() 根据关联数组的键,对数组进行降序排列

 

4函数

4.1内建函数

PHP 的真正威力源自于它的函数。在 PHP中,提供了超过 1000个内建的函数,请参考文档

4.2自定义函数

· 参数

参数默认值

· return返回值

function add($x,$y){

$total=$x+$y;

return $total;

}

5面向对象

5.1

5.1.1定义一个类

· 类使用 class 关键字后加上类名定义。

· 类名后的一对大括号{}内可以定义变量和方法。

· 类的变量使用 var 来声明, 变量也可以初始化值。

· 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。

<?php

    class Person{

        // 成员属性

        var $name;

        var $age = 18;

 

        //成员方法

        function setName($name){

            $this->name = $name;

        }

 

        function getAge(){

            return $this->age;

        }

    }

?>

5.1.2实例化对象

$p = new Person();

5.1.3调用成员属性/方法

在实例化对象后,我们可以使用‘->’操作该对象调用成员属性/方法

$p->setName('老谢');

$p->name;

5.1.4构造函数

__construct构造函数是一种特殊的方法。主要用来在创建对象时初始化对象,写在创建对象的语句中。

class Web{

    function __construct( $par1, $par2 ) {

       $this->url = $par1;

       $this->title = $par2;

    }

}

5.1.5指针对象

1. $this:this是指向对象实例的一个指针

2. self:self是对类本身的一个引用

3. parent:parent是对父类的引用

5.1.6访问控制

PHP 对属性或方法的访问控制,是通过在属性/方法前面添加关键字来实现。

· public(公有,默认):公有的类成员可以在任何地方被访问。

· private(私有):私有的类成员只能在类本身中访问。

· protected(受保护):受保护的类成员只能在类本身、子类、父类中访问。

· static(静态):声明类属性或方法为静态,就可以不实例化类而直接访问

· 访问方式:类名::方法

PS
- 类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。
- 类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。

class Person{

// 成员属性

var $type = '人类';

// 构造函数

function __construct($name,$age){

// 成员属性

$this->name = $name;

$this->age = $age;

}

 

// 成员方法

// 公有

public function eat(){

echo "我叫{$this->name},今年{$this->age}岁<br>";

}

// 私有

private function coding(){

echo "coding html5<br>";

$this->eat();

}

// 受保护

protected function doo(){

// 在类内部可调用私有方法

$this->coding();

}

}

 


5.2继承

使用关键字 extends 来继承一个类,继承后子类就拥有父类的属性和方法(私有除外),格式如下:

class Man extends Person {

    // 添加成员函数

    function setAge($age){

        $this->age = $age;

    }

 

    //重写方法

    function setName($name){

        $this->name = $name;

        return $name;

    }

}

 私有属性/方法不能被继承

6生成动态页面

6.1动态页面传参

· $_GET

· $_POST

· $_REQUREST

6.2 session

· session_start():启动新会话

· session_destroy():销毁一个会话中的全部数据

· time():获取当前时间,返回自1970110时到当前时间的秒数

    session_start();

 

    if(!isset($_SESSION['last-access'])){

        $_SESSION['last-access'] = time();

    }

 

    //超过60s为超时

    $overtime = (time() - $_SESSION['last-access']) > 60;

用户登录超时自动退出

7编写后台数据API接口

利用php编写数据接口

7.1本地数据

7.1.1直接返回数据

1. json_encode();

把数据转成字符串。php5.4+ 使用JSON_UNESCAPED_UNICODE防止中文转义。如:echo json_encode($current,JSON_UNESCAPED_UNICODE);

2. json_decode(json,assoc);

把字符串转成数组/对象。json:待解码的json string 格式的字符串;assoc:默认false返回object,当该参数为true时,将返回array

7.1.2文件的读取与写入

7.1.2.1 fopen(filename,mode):打开文件

使用fopen函数打开文件时,你首先需要明确:

1.打开文件干什么?是读文件中的数据呢,还是将数据写入文件,亦或者读写文件

2.另外你需要考虑如果文件中已经存在相关数据,你是覆盖原有文件中的数据呢,还是仅仅将新数据添加至文件末尾

其中,filename为文件路径,mode为打开文件的模式。

文件模式:

1. r 以只读方式打开文件,从文件头开始读

2. r+ 以读写方式打开文件,写入时以追加的方式写入文件

3. w 以写入方式打开文件,从文件头开始写。如果文件不存在则尝试创建,如果文件存在,则先删除文件中的内容

4. w+ 以读写方式打开文件,从文件头开始读写。如果文件不存在则尝试创建,如果文件存在,则先删除文件中的内容

5. a 以写入方式打开,从文件末尾开始追加写。如果文件不存在则尝试创建

6. a+ 以读写方式打开,从文件末尾开始追加写入或者读。如果文件不存在则尝试创建。

7.1.2.2 fread():读取内容

7.1.2.3 fwrite():写入内容

7.1.2.4 fclose():关闭文件,避免资源占用

7.1.2.5 filesize():读取文件字符长度

    //以读取模式打开文件

    $myfile = fopen('./data/weibo.json', 'r');

    //读取文件内容

    $content = fread($myfile, filesize('./data/weibo.json'));

 

    //关闭文件,减少资源占用

    fclose($myfile);

 

7.1.3文件上传

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

7.1.3.1上传方式

· 传统表单提交

method: “post”;

enctype: “multipart/form-data”。

· ajax提交

formData:可以异步上传二进制文件;

Post。

7.1.3.2文件信息

· $_FILES["file"]["name"] 上传文件的名称

· $_FILES["file"]["type"] 上传文件的类型

· $_FILES["file"]["size"] 上传文件的大小,以字节计

· $_FILES["file"]["tmp_name"] 存储在服务器的文件的临时副本的名称

· $_FILES["file"]["error"] 由文件上传导致的错误代码

PS:第一个参数是表单的name属性

7.1.3.3 move_unloaded_file(temp,url)移动临时文件到指定目录

7.1.3.4 iconv(current,out,str)修改文件编码

7.2获取远程JSON数据

爬虫
原理:获取页面所有内容,并利用正则匹配所需内容

1.file_get_contents($url);

2.preg_match_all($reg,$str,$res);

3.preg_match($reg,$str,$res)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值