PHP之路,Day1 - PHP基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP之路,Day1 - PHP基础相关的知识,希望对你有一定的参考价值。

本节内容
  1.php介绍
  2.第一个PHP脚本程序
  3.PHP语言标记
  4.指令分割符
  5.程序注释
  6.在程序中使用空白符的处理
  7.变量
  8.变量的类型
  9.数据类型之间相互转换
  10.常量

 

一、PHP介绍

1.什么是PHP?

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

2.PHP 能够做什么?

  • PHP 能够生成动态页面内容
  • PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
  • PHP 能够接收表单数据
  • PHP 能够发送并取回 cookies
  • PHP 能够添加、删除、修改数据库中的数据
  • PHP 能够限制用户访问网站中的某些页面
  • PHP 能够对数据进行加密
  • 通过 PHP,您可以不受限于只输出 HTML。您还能够输出图像、PDF 文件、甚至 Flash 影片。您也可以输出任何文本,比如 XHTML 和 XML。

3.PHP的历史

  PHP 继承自一个老的工程,名叫 PHP/FI。PHP/FI 在 1995 年由 Rasmus Lerdorf 创建,最初只是一套简单的 Perl 脚本,用来跟踪访问他主页的人们的信息。它给这一套脚本取名为“Personal Home Page Tools”。随着更多功能需求的增加,Rasmus 写了一个更大的 C 语言的实现,它可以访问数据库,可以让用户开发简单的动态 Web 程序。Rasmus » 发布了 PHP/FI 的源代码,以便每个人都可以使用它,同时大家也可以修正它的 Bug 并且改进它的源代码。

PHP/FI

  PHP/FI,一个专为个人主页/表单提供解释程序的程序,已经包含了今天 PHP 的一些基本功能。它有着 Perl 样式的变量,自动解释表单变量,并可以嵌入 HTML。语法本身与 Perl 很相似,但是它很有限,很简单,还稍微有些不协调。

PHP/FI 2.0

  到1997年,PHP/FI 2.0,也就是它的 C 语言实现的第二版在全世界已经有几千个用户(估计)和大约 50,000 个域名安装,大约是 Internet 所有域名的 1%。但是那时只有几个人在为该工程撰写少量当代码,它仍然只是一个人的工程。

  PHP/FI 2.0 在经历了数个 beta 版本的发布后于 1997 年 11 月发布了官方正式版本。不久,PHP 3.0 的第一个 alpha 版本的发布,PHP 从此走向了成功。

PHP 3

  PHP 3.0 是类似于当今 PHP 语法结构的第一个版本。Andi Gutmans 和 Zeev Suraski 在为一所大学的项目中开发电子商务程序时发现 PHP/FI 2.0 功能明显不足,于是他们重写了代码。这就是 PHP 3.0。经过Andi,Rasmus 和 Zeev 一系列的努力,考虑到 PHP/FI 已存在的用户群,他们决定联合发布 PHP 3.0 作为 PHP/FI 2.0 的官方后继版本。而 PHP/FI 2.0 的进一步开发几乎终止了。

  PHP 3.0 的一个最强大的功能是它的可扩展性。除了给最终用户提供数据库、协议和 API 的基础结构,它的可扩展性还吸引了大量的开发人员加入并提交新的模块。后来证实,这是 PHP 3.0 取得巨大成功的关键。PHP 3.0 中的其它关键功能包括面向对象的支持和更强大和协调的语法结构。

  这个全新的语言伴随着一个新的名称发布。它从 PHP/FI 2.0 的名称中移去了暗含“本语言只限于个人使用”的部分。它被命名为简单的缩写“PHP”。这是一种递归的缩写,它的全称是——PHP: Hypertext Preprocessor。

  1998 年末,PHP 的安装人数几近 10,000,有大约 100,000 个网站报告他们使用了 PHP。在 PHP 3.0 的顶峰,Internet 上 10% 的 web 服务器上都安装了它。

约九个月的公开测试后,官方于 1998 年 6 月正式发布 PHP 3.0。

PHP 4

  1998 年的冬天,PHP 3.0 官方发布不久,Andi Gutmans 和 Zeev Suraski 开始重新编写 PHP 代码。设计目标是增强复杂程序运行时的性能和 PHP 自身代码的模块性。PHP 3.0 的新功能和广泛的第三方数据库、API的支持使得这样程序的编写成为可能,但是 PHP 3.0 没有高效处理如此复杂程序的能力。

  新的被称为“Zend Engine”(这是 Zeev 和 Andi 的缩写)的引擎,成功的实现了设计目标,并在 1999 年中期首次引入 PHP。基于该引擎并结合了更多新功能的 PHP 4.0,在 PHP 3.0 发布两年后,于2000年5月发布了官方正式版本。除了更高的性能以外,PHP 4.0 还包含了其它一些关键功能,比如:支持更多的 web 服务器;HTTP Sessions 支持;输出缓冲;更安全的处理用户输入的方法;一些新的语言结构。

  今天,已经有 10,000 名开发人员(估计)和几百万网站报告已安装了 PHP,占整个 Internet 域名的 20%。

PHP 的开发小组有很多优秀的开发人员,同时还有大量的优秀人才在进行 PHP 相关工程的开发工作,如 PEAR 和 PHP 文档的工程。

PHP 5

  PHP 5 在长时间的开发及多个预发布版本后,于 2004 年 7 月发布正式版本。它的核心是 Zend 引擎 2 代,引入了新的对象模型和大量新功能。

 

 二、第一个PHP脚本程序

例:

<?php

print (HelloWorld!....);

?>

 

  三、PHP语言标记

 1.xml风格(标准风格推荐使用)

<?php 
echo"这是xml风格的标记"; 
?> 

xml风格的标记是常用的标记,也是推荐使用的标记,服务器不能禁用,该风格的标记在xml,xhtml中都可以使用。

2.脚本风格

<script languange="php"> 
echo‘这是脚本风格的标记‘; 
</script> 

3.简短风格

<?这是简短风格的标记;?> 

注:需要在php.ini中设置short _open_tag=on,默认是on,或者在 PHP 编译时加入了 –enable-short-tags 选项。(PHP 3版本还可以通过 short_tags() 函数激活使用短标记。)

4.asp风格

<% 
echo‘这是asp风格的标记‘; 
%> 


注:默认是不支持的,需要在 php.ini 配置文件中开启 asp_tags = on,ASP 风格标记的支持是 3.0.4 版添加的。

在以下情况应避免使用短标记:

开发需要发行的程序或者库,或者在用户不能控制的服务器上开发。因为目标服务器可能不支持短标记。为了代码的移植及发行,确保不要使用短标记。

 

四、指令分割符

  同 C 或 Perl 一样,PHP 需要在每个语句后用分号结束指令。一段 PHP 代码中的结束标记隐含表示了一个分号;在一个 PHP 代码段中的最后一行可以不用分号结束。如果后面还有新行,则代码段的结束标记包含了行结束。

<?php
    echo "This is a test";
?>

<?php echo "This is a test" ?>

<?php echo ‘We omitted the last closing tag‘;

注:文件末尾的 PHP 代码段结束标记可以不要,有些情况下当使用 include() 或者 require() 时省略掉会更好些,这样不期望的白空格就不会出现在文件末尾,之后仍然可以输出响应标头。在使用输出缓冲时也很便利,就不会看到由包含文件生成的不期望的白空格。

 

五、程序注释

  对于阅读代码的人来说,注释其实就相当于代码的解释和说明。注释可以用来解释脚本的用途、脚本编写人、为什么要按如此的方法编写代码、上一次修改的时间等等。PHP支持C、C++和Shell脚本风格的注释,如下:

//... ... 单行注释
/* ... ... */多行注释 (注意:不能嵌套)
# ... ... 脚本注释

程序员在编程时使用注释是一种良好的习惯,优点:
写帮助文档
调试程序
注意: 注释要写在代码的上面或是右边

 

六、在程序中使用空白符的处理

  一般来说,空白符(包括空格、Tab制表符、换行)在PHP中无关紧要,会被PHP引擎忽略。可以将一个语句展开成任意行,或者将语句紧缩在一行。空格与空行的合理运用(通过排列分配、缩进等)可以增强程序代码的清晰性与可读性,如果不合理运用,便会适得其反。空行将逻辑相关的代码段分隔开,以提高可读性。

1.下列情况应该总是使用两个空行

  • 一个源文件的两个代码片段之间。
  • 两个类的声明之间

2.下列情况应该总是使用一个空行

  • 两个函数声明之间
  • 函数内的局部变量和函数的第一条语句之间
  • 块注释或单行注释之前
  • 一个函数内的两个逻辑代码段之间,用以提高可读性

3.空格的应用规则是可以通过代码的缩进提高可读性

  • 空格一般应用于关键字与括号之间,不过需要注意的是,函数名称与左括号之间不应该用空格分开
  • 一般在函数的参数列表中的逗号后面插入空格
  • 数学算式的操作数与运算符之间应该添加空格(二进制运算与一元运算除外)
  • for语句中的表达式应该用逗号分开,后面添加空格
  • 制类型转换语句中的强制类型的右括号与表达式之间应该用逗号隔开,添加空格

 

七、变量

1.变量的声明

  变量是用于临时存储值的容器。这些值可以是数字、文本、或者复杂得多的排列组合。是用于跟踪几乎所有类型信息的简单工具。
  PHP是一种非常弱的类型语言。在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,例如C语言中。而在PHP中,变量的类型通常不是由程序员设定的,确切地说,是根据该变量使用的上下文在运行时(即变量的值)决定的。PHP不要求在使用变量之前声明变量,当第一次给一个变量赋值时,你才创建了这个变量。

  PHP的变量声明是以$符开始的,后面跟大小写字母,数字和下划线,但不能以数字开头。

<?php
  $a=100;     //声明一个变量d,赋予整数100
  $b=“string”;    //声明一个变量d,赋予字串string
  $c=true;    //声明一个变量d,赋予布尔值true
  $d=99.99;   //声明一个变量d,赋予浮点数99.99
  $key=$a;    //声明一个key变量,并将a变量的值赋予
  $a=$b=$c=$d=“value”;  //同时声明多个变量,并赋予相同的值
?>

注:可以使用函数unset( )释放指定的变量,isset( )函数检测变量是否设置,empty( )函数检查一个变量是否为空。

2.变量的命名

  变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。变量的名称是对大小写敏感的。但内置结构和关键字以及用户自定义的类名和函数名都是不区分大小写的。如:echo、while、function名称等。

<?php
  echo “this is a test”;    
  Echo “this is a test”;
  $name=“tarzan”;
  $Name=“skygao”;
  echo $name.$Name; //输出:tarzanskygao
?>

 

八、变量的类型

 

1.类型介绍

数据类型:
PHP 支持八种原始类型。
四种标量类型

  • 布尔型(boolean)
  • 整型(integer)
  • 浮点型(float)(浮点数,也作double)
  • 字符串(String)

两种复合类型:

  • 数组(Array)
  • 对象(Object)

最后是两种特殊类型:

  • 资源(Resource)
  • NULL

 


  在PHP中,变量的类型通常不是由程序员设定的,确切地说,是根据该变量使用的上下文在运行时(即变量的值)决定的。使用函数var_dump( )查看表达式的值和类型。

<?php
  $bool=TRUE;   //赋一个布尔值
  $str=“foo”;   //赋一个字符串
  $int=12;    //赋一个整型值

  var_dump($bool);  //输出:bool(true)
  var_dump($str); //输出:string(3) "foo"
  var_dump($int); //输出:int(12)
?>

 

2.布尔型(boolean)

 

3.整型(integer)
4.浮点型(float或double)
5.字符串(String)
6.数组(Array)
7.对象(Object)
8.资源类型(Resource)
9.NULL类型
10.伪类型介绍

 

 

 

 

待续。。。。。。。。

 

以上是关于PHP之路,Day1 - PHP基础的主要内容,如果未能解决你的问题,请参考以下文章

DAY1:webshell与中国菜刀

Python之路Day1-Python基础1

Python开发运维之路day1

Python之路,Day1 - Python基础1

Python之路,Day1 - Python基础1

Python之路,Day1 - Python基础1