初探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

      

    

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

  1. 初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

  2. CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探

    CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...

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

    前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...

  4. JavaScript学习(一) —— 环境搭建与JavaScript初探

    1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...

  5. .NET文件并发与RabbitMQ(初探RabbitMQ)

    本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址:http://www.cnblogs.com/tdws/p/5860668.html 想必MQ这两个字母对于各位前辈们和老司 ...

  6. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

  7. 【手把手教你全文检索】Apache Lucene初探

    PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...

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

    一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性 ...

  9. NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

    一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...

  10. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生

    一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...

随机推荐

  1. 在Windows上安装Elasticsearch 5.x

    在Windows上安装Elasticsearch 5.x 自己想学习Elasticsearch,但是又不懂Linux,按照同事给的Linux安装教程,也是搞不明白,于是想先在Windows上安装一下入 ...

  2. 一步一步学EF系列四【升级篇 实体与数据库的映射】

    之前的三张为基础篇,如果不考虑架构问题,做一般的小程序,以足够用了.基本的增删改查也都有了.但是作为学习显然是不够的.通过之前三章的学习,有没有发现这样写有什么问题,有没有觉得繁琐的?可能有人会说,之 ...

  3. SpringCloud Config Server中{application}等占位符使用场景设置默认拉去分支

    Spring Cloud Config服务器支持一个Git仓库URL,其中包含{application}和{profile}(以及{label})的占位符. 1.各个占位符所代表的含义 applica ...

  4. Maven打包部署

    Maven打Jar包 问题一 Eclipse突然SB告诉我类不存在还让我导包进来O__O "…,但是我明明有这个类.这是不要慌,通过在网上搜索得知:由于eclipse的编译是基于时间戳的判断 ...

  5. oracle中自定义type、以及java中传递list到过程中的例子

    在java开发过程中有时候为了处理数据的速度更快,会把要处理的数据组装成list,把list作为过程的一个参数,在过程中批量处理,下面就以一个例子做简单的阐述,以此谨记. --药品目录智能审核 --说 ...

  6. Storm概念讲解,工作原理

    一.storm是一个用于实时流式计算的分布式计算引擎,弥补了Hadoop在实时计算方面的不足(Hadoop在本质上是一个批处理系统). 二.storm在实际应用场景中的位置一般如下: 其中的编号1~5 ...

  7. PHP jsonencode 已经json中包含 汉字的处理

    <?php $arr = array ( 'Name'=>'希亚', ); $jsonencode = json_encode($arr); echo $jsonencode; ?> ...

  8. [Deep Learning]任意层cnn的matlab版本实现

    之前实现了一层的卷积神经网络,又实现了两层的卷积神经网络,接下来把cnn扩展到任意层就不难了. 这难道就是传说中的“道生一,一生二,二生三,三生万物”么?=.= 代码还是在github上. 比较有趣的 ...

  9. APP开放接口API安全性——Token令牌Sign签名的设计与实现

    在APP开放接口API的设计中,避免不了的就是安全性问题. 一.https协议 对于一些敏感的API接口,需要使用https协议.https是在http超文本传输协议加入SSL层,它在网络间通信是加密 ...

  10. 20145329 《Java程序设计》第七周学习总结

    教材学习内容总结 +JDK出现之前就已经存在的java.util.Date与java.util.Calendar等API +如果想取得系统时间,方法之一是使用System.currentTimeMil ...