php详解及基本知识

对于初次学习php的来说,需要在自己电脑上搭建php环境。省去空间和上传的麻烦!
这里推荐一个软件:WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。
这篇文章讲的安装很好了,wampserver安装详解

1.php入门原理

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

(1)php运行的原理:

php详解及基本知识_第1张图片
最终解析成:
php详解及基本知识_第2张图片
访问php页面是看不到PHP代码的;

(2)两种PHP运行方式

(1) 通过虚拟路径访问,也就是URL地址:单线程;
(2) CLI运行方式:真正的多线程
这里写图片描述

2.php语法

(1).php指令分隔符“分号”

php在程序中使用功能执行语句,例如变量的声明、内容的输出、函数的调用等,是用来在程序中执行某些特定功能的语句,这种语句也可以成为指令,php需要在每个指令后用分号结束。
记得刚学着做php原生态的时候,找个bug半天就是没有找到,后面发现是有个语句分号没写,以前用惯了javascript的语法,有时候习惯不加分号。
ps:养成良好的代码格式规范还是有必要的。

(2)代码注释

php注释的三种形式:
以“/”和“/”闭合多行注释符,
“//”和”#”开始的单行注释符。

(3)变量

1.php变量的定义是使用$。
1) 以$开头,$后面不能直接跟数字,后面跟字母、数字、下划线;
2) 变量名称区分大小写,PHP关键词不区分大小写;
3)第一次赋值,就创建了变量。必须使用"$"后跟变量名表示。再次给该变量赋值会覆盖之前的变量。
2.变量的类型
4种标量类型:boolean(布尔型)integer(整型)float(浮点型)string(字符串)
2种复合类型:array(数组)object(对象)
2种特殊类型:resource(资源)、NULL
如果想看某个表达式的值和类型,可以使用函数var_dump()
3.变量赋值

1)赋值传值:
$h = 120;
    $q = $h; //将$h的值拷贝给$q
    $h = 135;
    echo $h;  //输出135 

2)引用传值:
$h = 155;
    $q = &$h; //引用传值,表示$h的地址传给$q
    $q = 195;
    echo $h; //输出195

3)可变变量

$a1 = array('username' => '邓海涛', 'passwd'=>'123456', 'tel'=>'15982369', 'email'=>'[email protected]');
    foreach ($a1 as $key122 => $value134) {
        ${$key122} = $value134;
    }
    echo $email;
    echo $tel;
4.变量检测
1)is_array:是否是数组;
2)is_bool :是否是布尔型;
3)is_float :是否是浮点型;
4)is_int :是否是整数;
5)is_null :是否为 NULL; 
6)is_numeric :是否为数字或数字字符串;
7)is_object :是否是一个对象;
8)is_resource :是否为资源类型;
9)is_string :是否是字符串;

(4)数组(arry)

使用print_r()函数查看数组中的全部内容。
数组分索引数组和关联数组,用array定义一个数组,数组的元素可以是任意类型的值;如果数组的元素还是数组,那么该变量就是多维数组;

    //PHP数组的定义
    $array1 = array();
    // $array1 = []; //用于7.0版本以后
//索引数组
$student = array('梁刚','郑鸿斌','易航','谭俊');//索引从0开始
    $num = array(1, 2, 3, 4, 5);
    //计算数组的元素个数:count();
    $an = count($student);
    echo $an;
//关联数组
$student1 = array('name'=>'赵梓茗', 'age'=>18, 'height'=>190.02); 
    //多维数组
    $students = array(
            0=>array('name'=>array('realname'=>'邓海涛', 'age'=>18, 'height'=>190),
            1=>array('name'=>'邓海涛',  'age'=>18, 'height'=>190),
            2=>array('name'=>'邓海涛',  'age'=>18, 'height'=>190),
        );
    var_dump($students);

3.php语句操作详解

1.php的输出方式

1)Echo:输出字符串; 
2)print_r() :打印变量的易于理解的信息;
3)var_dump():打印易于理解的完整数据信息及结构,包括字符串长度;
4)exit():打印并停止执行PHP脚本;
die():同exit

2.单引号和双引号

1)双引号里面的变量会解析,单引号不会解析;
2)双引号里面的变量如果还要内容,最好用{}括起来;
3)推荐使用单引号:运行效率稍微高点;
4)如果输出单引号或者双引号,需要转义;

这里写图片描述

3.SESSION和COOKIE

1)SESSION:为每个访问者创建一个唯一 id ,并基于这个ID 来存储信息,Session_id()返回当前会话id;
2)通过session_start() 启动session会话(必须位于  标签之前); 
3)$_SESSION[‘username’] = ’用户账号’; 用于设置session值; 
4)$_SESSION[‘username’] 用于获取session值; 
5)unset() 用于释放指定的session变量; 
6)session_destroy() 将重置所有session数据;
7)cookie 信息存储在用户电脑中,每当用户访问网页时同时会发送cookie ;
setcookie(name, value, expire); 用户设置cookie内容; 
$_COOKIE[“user”]用于获取cookie的值; 
setcookie(“user”, “”, time()-3600);用于删除cookie内容 ;

4.表单处理

1)Action指定后台处理的页面,method指定数据传输方式:
这里写图片描述
2)PHP如何接收POST过来的数据:
获取指定输入框的数据:这里写图片描述

全部数据存放在一个数据里面的:这里写图片描述

3)PHP接收GET过来的数据方式:$_GET[‘username’];

5.流程控制

数组一般使用foreach遍历:

$arrar1 = array(1, 56, -89, 120, 568, 1028, 56, 3);
$max = $arrar1[0];
foreach ($arrar1 as $key => $value) {
    if($max < $value){
        $max = $value;
    }
}
echo $max;

6.函数

1)函数是可重复使用的代码块,使程序结构清晰,易于维护。
2)函数内部使用外部的变量使用global;
3)函数分为自定义函数和内置函数;

function fn(参数1,参数2,参数3…) {
执行的代码; 
Return 返回的数据,可以是数组、对象、字符串等
}

7.文件读写

1)打开文件: fh=fopen( filename, “打开模式”);打开模式描述如下表:
php详解及基本知识_第3张图片

2)读取打开的文件指定长度的内容:fread( fh,filesize( filename));
3)读取文件单行内容:Fgets($fh);
一行一行读取文件所有内容:

while(!feof($fh)){
     $str1 = fgets($fh);
}

4)文件写入:

fwrite($fh, “访客1\tip:112.105.213.20\t时间:2017-03-06 16:42:21 " . PHP_EOL);

5)关闭打开的文件:fclose($fh);
6)一次性获取文件内容和写入文件的方式:

//读取远程文件内容
    $str =    file_get_contents('http://localhost/indexmk/preview.do');
    var_dump($str);
    //写入文件
    file_put_contents('a.html', $str);

8.文件上传

1)表单method必需为POST;
2)指定表单enctype属性值为”multipart/form-data” :
enctype:encodetype,即编码类型;
multipart/form-data:表单数据由多部分构成,如文本、二进制数据文件等;
3)指定input标签的type为file:

<input type=“file” name=“uploadfile” id=“uploadfile” />

4)使用$_FILES[‘uploadfile’]获取上传文件的相关信息;
5)move_uploaded_file() :将上传的文件从临时空间移动到你想保存的目录:

move_uploaded_file($_FILES["uploadfile"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);

4.面向对象编程

1)面向对象编程简称OOP( Object-oriented programming );
2)类是具有相同属性和服务的一组对象的集合;
3)对象是类的实例;
4)如何定义一个类:

    class Person
    {
        //类的属性
        public $name;
        //构造函数,对类和属性进行初始化
        function __construct($name1, $age1){
            $this->name 	= $name1;
        }       
    }

5)实例化一个对象

$person1 = new Person('李鑫', 170);
//调用对象的属性
echo  $person1->name;

6)成员变量
类中的变量,也称为属性。成员变量用来保存信息数据,或与成员方法进行交互来实现某项功能。
定义成员变量的格式为:关键字 成员变量名。
访问成员变量和访问成员方法是一样的。只要把成员方法换成成员变量即可,格式为:
对象名 -> 成员变量

7)成员方法
类中的函数被称为成员方法。
函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。

class Student{
    //学生的名字
    var $name; 
    function setName($name){ 
     //把局部变量给当前对象的全局变量赋值
     $this->name = $name;
    }
    function getName(){
     //返回当前对象全局变量$name
     return $this->name;
    }
   }

8)PHP 构造函数
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值;

    function __construct( $name, $age ) 
    { 
        $this->name = $name; 
        $this->age= $age;
    }

9)析构函数
析构方法的作用和构造方法正好相反,对象生命周期结束时调用;

    function __destruct( $name, $age ) 
    { 
        echo $this->name; 
        echo $this->age; 
    } 

10)类的继承
PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承。

     class ChildClass extends ParentClass { 
        // 代码部分 
    } 

11)访问控制
–public(公共成员)
可以公开的、没有必要隐藏的数据信息。可以在程序中的任何位置(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员;
–private(私有成员)
被private关键字修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问。在子类中也不可以;
–protected(保护成员)
被protected修饰的类成员,可以在本类和子类中被调用,其他地方则不可以被调用;

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

13)Final 关键字
a)如果父类中的方法被声明为 final,则子类无法覆盖该方法;
b)如果一个类被声明为 final,则不能被继承;

14)调用父类构造方法: parent::__construct();

15)自动加载类 __autoload()函数:

function __autoload($classname) {
    require_once $classname . '.php';
}
// MyClass1类不存在时,自动调用__autoload()函数,传入参数”MyClass1”
$obj = new MyClass1();

总结

php原生态的基础编程知识学习到了这,下次介绍ci框架下的php编程,基于mvc编程模式,可以更加方便更加快速的开发代码。

你可能感兴趣的:(php)