zoukankan      html  css  js  c++  java
  • PHP---初探PHP

      初探PHP

        虽然说前后端分离,但作为前端还是要跟数据打交道的,所以对后台语言的了解还是很有必要的。今天要学的就是PHP。

        什么是PHP?

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

        基本语法:

          变量:创建一个变量用$标志符声明(PHP会根据$标识符识别变量),但变量本身不包括$标识符。

         

          输出:PHP的输出语句有2条: 一条是 echo语句 可以一次性输出任意条语句 ;一条是print语句,一次只能输出一条语句。2者的区别:echo执行速度快,没有返回值; print执行速度较慢(是因为有返回值 返回值总为1)。店长推荐echo输出语句

          拼接字符串(并置):PHP使用【.】来拼接字符串(跟JavaScript有很大的区别,注意区分)

          全局变量和局部变量:在函数内部的变量称为局部变量,在函数外部的变量称为全局变量。函数内部是不能直接访问到函数外部的变量的(这跟JavaScript有很大的区别,注意区分, 但可以使用$GLOBALS数组访问

      

    <?php
        $x='global x';
        function myTest(){
            //echo $x;//报错
    
            //正确写法
            echo $GLOBALS['x'];
    
            //在函数中创建全局变量
            $GLOBALS['y'] = $GLOBALS['x'];
        } 
        myTest();
        echo $y;
    ?>

      chrome中显示:

          关键字global:用于函数内访问全局变量  在函内调用全局变量,除了使用$GLOBAL数组,还可以在变量前加上global关键字

    <?php
        $x=5;
        $y=10;
        function myTest(){
            global $x,$y;
            $y=$x+$y;
        }
        myTest();
        echo $y; // 输出 15
    ?>

      chrome中显示:

        关键词static:当函数执行完毕时,内部的变量通常会被删除以减少内存的使用,但如果要指定某个局部变量不被删除,可以在第一次声明变量时使用static关键字

    <?php
    function myTest(){
        static $x=0;
        echo $x;
        $x++;
    }
    myTest();//=>0
    echo '<br>';
    echo '<br>';
    myTest();//=>1
    echo '<br>';
    echo '<br>';
    myTest();//=>2
    //变量不被删除的结果是:每次执行函数都在原来的基础上+1
    ?>

      chrome中显示:

      超级全局变量:在脚本任何地方都可以访问的变量

            1.$GLOBALS

            2.$_POST/$_GET(被广泛运用于表单数据收集和ajax请求)

            3.$_COOKIE  用于收集前端发过来的cookie数据

            4.$_REQUEST  该变量包含$_COOKIE $_POST/$_GET的内容

            5.$_SESSION   服务器版的cookie

     

      常量

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

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

           3.默认是全局变量,可以在整个运行的脚本的任何地方使用。

         4.常量名建议全部大写

          格式:define(name,value[,case_insensitive])    name:必选参数,常量名称,即标志符。  value:必选参数,常量的值。case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

          实例:   define("ENNAME", "laoxie");

      数组:PHP的数组形式和JavaScript较大的区别;这里拿出来说一下。首先:PHP数组是有类型的:数值数组--带有数字索引值的数组  关联数组 --带有指定的键的数组,每个键关联一个值    多维数组--包含一个数组或多个数组的数组。 在PHP中,使用array()函数创建数组  echo是不能直接打印数组的(需要用到json_enconde()转换为字符串)

    <?php
        //数值数组
        $cars=array("Volvo","BMW","Toyota");
    
        //关联数组
        $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
            
    ?>

        关于数组的方法有:

          获取数组的长度:count()

          遍历数组:for / foreach()

    <?php
        //遍历数值数组:for循环
        $cars=array("Volvo","BMW","Toyota");
        $arrlength=count($cars);
        for($x=0;$x<$arrlength;$x++){
            echo $cars[$x] . "<br>";
        }
    
        //遍历关联数组:foreach
        $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
        foreach($age as $x=>$x_value){
            echo "Key=" . $x . ", Value=" . $x_value;
            echo "<br>";
        }
    ?>

      在chrome中显示:

       面向对象:PHP的面向对象跟JavaScript也有很大的不同。

          类:定义一个类使用class关键字 加上类名 类名后紧跟一对大括号({}),在括号内可以定义变量和方法。类的变量使用var声明  里面的函数定义跟JavaScript的函数定义类似。

    <?php
        class Person{
            // 成员变量
            var $name;
            var $age = 18;
    
            //成员函数
            function setName($name){
                $this->name = $name;
            }
    
            function getAge(){
                return $this->age;
            }
        }
    ?>

          实例化对象:$p = new Person;

          调用成员属性/方法:使用“->”(类似JavaScript的【.】)调用   $p->setName('Tom');  $p->name;

           构造函数: __construct构造函数是一种特殊的方法。主要是用来创建对象时,初始化对象    声明方式:

                  function __constrcut($par1,$par2..){#code}

          构析函数:__destruct构析函数是与构造函数相反,当对象结束生命周期时(例如对象所在的函数已调用完毕),系统会自动执行构析函数 注:一个类只用存在一个构析函数。 声明方式: function __destruct(){#code}

          访问控制:public(公有,默认)--公有的类成员可以在任何地方被访问  声明方式: var $par

               private(私有)--私有成员只能在类内部才能被访问   声明方式:private $par

               protected(受保护的) --受保护的类成员只能在类内部,子类,父类中访问  声明方式:protected $par

               static(静态) --声明类属性或方法为静态,之内由类访问,不能被实例化对象访问  声明方式:static $name

                      访问方式:类名::方法/属性(很特殊,不是用【->】访问的)

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

        

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

          格式如下:

    class Man extends Person {
        // 添加成员函数
        function setAge($age){
            $this->age = $age;
        }
    
        //重写方法
        function setName($name){
            $this->name = $name;
            return $name;
        }
    }

     

     

        生成动态页面:这涉及到几个方面---表单提交:$_POST、$_GET、$_REQUEST;   会话:session    关于session的几个方法:session_start()---启动新会话   session_destory()---销毁一个会话的全部数据   time()---获取当前时间

        接口:利用PHP编写数据接口  

            读取本地数据时,直接返回数据    json_encode()--讲数组转化为字符串   json_decode(json, assoc)--将字符串转化为数组/对象  assoc为true时,将返回array。

            文件的读取和写入

              fopen(filename, mode): 打开文件

              fread(): 读取内容

              fwrite():写入内容

              fclose():关闭文件

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

      

     //以读取模式打开文件
        $myfile = fopen('./data/weibo.json', 'r');
    
        //读取文件内容
        $content = fread($myfile, filesize('./data/weibo.json'));
    
        //关闭文件,减少资源占用
        fclose($myfile);

        

           获取远程json数据:

              API数据

                curl:client url

    $url = 'http://wthrcdn.etouch.cn/weather_mini?city=广州';
    
    //初始化 cURL会话
    $ch = curl_init(); 
    
    // 设置需要的选项
    curl_setopt($ch, CURLOPT_URL, $url); 
    
    //执行会话
    $contents = curl_exec($ch); 
    
    //关闭会话
    curl_close($ch); 
    
    //输出内容
    echo $contents; 

              

              爬虫:file_get_contents()   preg_match_all();

      PHP的基本语法 就写这么多了(没提到的跟JavaScript类似),细节以后会继续补充

                                              2017-3-23  15:30

          

        

  • 相关阅读:
    JAVA知识点在整理(可供面试参考)
    Spring Destroying singletons ... root of factory hierarchy 问题【已解决】
    《Spring AOP的设计和实现方式》
    java源码集合体系解析
    springcloud的一些自己想法
    部署一套单Master的K8s集群
    K8S系统学习-----Pod 容器组
    RH358学习笔记--8(使用HAProxy终止HTTPS流量和并进行负载均衡)
    Docker 资源汇总
    RH358学习笔记--8(使用Nginx配置Web服务器学习)
  • 原文地址:https://www.cnblogs.com/first-time/p/6599666.html
Copyright © 2011-2022 走看看