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

      

    

时间: 2024-10-09 08:28:06

PHP---初探PHP的相关文章

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

[转载]HDFS初探之旅

转载自 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html , 感谢虾皮工作室这一系列精彩的文章. Hadoop集群(第8期)_HDFS初探之旅 1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高

MongoDB初探系列之二:认识MongoDB提供的一些常用工具

在初探一中,我们已经可以顺利的将MongoDB在我们自己的机器上跑起来了.但是在其bin目录下面还有一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹下创建的文件的用途. 1.bin目录下面的各种小工具简介及使用方式 bsondump.exe 用于将导出的BSON文件格式转换为JSON格式mongo.exe mongoDB的客户端 mongod.exe 用于启动mongoDB的Server mongodump.exe 用于从mongodb数据库中导

Asynchronous Pluggable Protocols 初探

Asynchronous Pluggable Protocols,异步可插入协议,允许开发者创建可插协议处理器,MIME过滤器,以及命名空间处理器工作在微软IE4.0浏览器以及更高版本或者URL moniker中.这涉及到Urlmon.dll动态链接库所公开(输出)的可插协议诸多功能,本文不进行深入的原理讲解,只对它其中之一的应用进行解析,那就是如何将一个应用程序注册为URL协议. 应用场景: tencent协议: 当我们打开"tencent://message/?uin=要链接的QQ号 &qu

重新认识HTML,CSS,Javascript 之node-webkit 初探

今天我们来系统的.全面的 了解一下前端的一些技术,将有助于我们写出 更优秀的 产品 出来. 什么是HTML? HTML 是用来描述网页的一种语言. HTML 包含一些根节点,子节点,文本节点,属性节点,组成, 它通过一系列预定义标签来描述网页结构,如: <title>This is title</title> ,这个表明该网页的标题是 This is title. 什么是CSS? CSS 指层叠样式表 (Cascading Style Sheets),它描述浏览器显示如何显示htm

java进阶06 线程初探

线程,程序和进程是经常容易混淆的概念. 程序:就是有序严谨的指令集 进程:是一个程序及其数据在处理机上顺序执行时所发生的活动 线程:程序中不同的执行路径,就是程序中多种处理或者方法. 线程有两种方法实现 一:继承Thread 覆盖run方法 package Thread; public class Thread1 { public static void main(String[] args){ MyThread1 thread1=new MyThread1(); thread1.setName

数据加密解密初探

在一次网络通信或者是进程通信中,如果传输数据采用明文的方式,那么很容易被第三方"窃听"到,安全性难以保障. 而所谓加密是让数据从明文变成密文,传输过程中是密文,传送过去之后对方接收到的也是密文.--可以理解为密文就是乱码,看不出内在的任何意义,通常也都是逐位对应的. 在接收方接收到密文之后只有把它还原为原来的样子才可以理解对方说的具体是什么,此过程就叫做解密. 所谓系统的安全要实现的目标应该包括:机密性-confidentiality,完整性-integrity 和可用性-availa

Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用

一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性,不得不说下Http协议.我们常常听到说,Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息.之所以我们在使用ASP.NET WebForm开发中会感觉不到Http的无状态特

Unity3D游戏开发初探

一.预备知识-对象的"生"与"死" (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的"指哪打哪"例子为基础,在AddForce脚本写入以下代码:   其中在CreateCube方法中,使用GameObject.CreatePrimitive方法来创建Cube类型的游戏对象实例,设置了它出现的坐标并为它增加刚体组件.这里可以看下AddCo