php基础知识
软件体系结构
1.单主机结构
界面显示、业务逻辑和数据存取功能都是在用户主机上实现,需要下载软件并安装,易盗版
2.Client/Server
界面显示、业务逻辑通常在客户端处理,数据存取功能在服务端进行,需要下载安装客户端软件
3.Browser/Server
业务逻辑和数据存取功能都在服务端进行,浏览器负责界面显示,无需再安装专门的客户端软件
B/S结构相比C/S结构优势
1.基于浏览器,具有统一的平台和UI体验
2.无需安装,只要浏览器,随时随地使用
3.保持最新版本,无需升级
4.数据存储在服务器,不担心丢失问题
web发展历程
web1.0:静态网站,不通过脚本语言以及数据库开发,而直接或间接制作成HTML的网页组成
web2.0:动态网站,用户能与网站进行交互,以数据库技术为基础,用户访问网站是通过读取数据库来动态生成网页的方法,大大减少了网站的维护工作量
动态网站开发所需要的Web构件
客户端浏览器(IE,FF)
超文本标记语言(HTML)
层叠样式表(CSS)
客户端脚本编程语言 (JavaScript)
Web服务器(Apache)
服务器端脚本编程语言 (PHP)
数据库管理系统 (MySQL)
合作开发过程
使用数据库去存储网页内容
使用HTML标识文档结构和添加内容
使用CSS对页面进行布局和美化
使用JavaScript完成用户与浏览器交互,实现页面特效
使用Web服务器(Apache)发布到网上
通过浏览器进行显示动态网站
LAMP网站开发组合概述
LAMP=Linux + Apache + MySQL + PHP (Web开发黄金组合)1.1 PHP 是什么?
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种开源的服务端脚本语言
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
PHP 文件可包含文本、HTML、JavaScript
代码和 PHP 代码
PHP于1994年由Rasmus Lerdorf创建
PHP 代码在服务器上执行,结果以纯 HTML
形式返回给浏览器
1.2 PHP 能做什么?
PHP 可以生成动态页面内容
PHP 可以收集表单数据
PHP 可以进行文字和图像处理
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以限制用户访问您的网站上的一些页面
1.3 为什么使用 PHP?
PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS、nginx 等)
PHP 提供了广泛的数据库支持(mysql、oracle、db等)
PHP 是开源免费的,官网: www.php.net
PHP 易于学习,并可高效地运行在服务器端
1.4 PHP开发工具
Zend Studio:商业版,Zend官方出品,基于eclipse
PHP Storm:商业版
Notepad++
SublimeText
Editplus
Adobe Dreamweave
2.1 PHP运行环境
Linux下的三种安装方式
源码包安装
rpm包安装
集成环境安装: 1. xampp 2. lnmp
windows安装的两种方式
单个下载安装
集成环境安装(AppServ,phpstudy,wamp)
3.1 PHP基本语法
PHP 文件的默认文件扩展名是 ".php"
PHP 脚本以 <?php 开始,以 ?> 结束,在纯PHP文件中结束的?>可以省去
以<script language="php">开始和</script>结束是长风格标记,并不常用
以<?开始和以?>结束标记是简短风格的标记,是最简单的,但是系统管理员偶尔会禁用掉它,
因为它会干扰XML文档的声明。只用通过php.ini配置文件中的指令short_open_tag打开后
就可以使用
以<%开始和以%>结束标记是ASP风格的标记,可以在php.ini配置文件设定中启用了asp_tags选项
就可以使用它(默认是禁用的),习惯了ASP风格的可以使用它
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来
PHP默认区分大小写,但内置结构和关键字以及用户自定义的类名和函数名都是不区分大小写的。如:echo、while、function名称等。
3.2 PHP注释
单行注释 //注释的内容
多行注释 /* 注释的内容*/
程序员在编程时使用注释是一种良好的习惯,便于代码阅读和调试程序
注意: 注释要写在代码的上面或是右边
4.1 PHP变量声明与赋值
$变量名称;
$变量名称 = 值;
变量名命名规则:
PHP变量必须以美元符号($)为前缀
变量名称必须以字母或下划线开头,包含字母、数字及下划线
变量名称禁止包含空格、斜线、反斜线等特殊符号
变量名称必须含义明确,不要使用关键字
变量名称建议遵守“小驼峰命名法”
PHP是一种“弱”类型语言,所以变量不需要声明数据类型
变量名区分大小写
4.2 PHP变量输出
echo()
echo() 函数输出一个或多个字符串,多个值之间用逗号分隔。echo() 函数实际不是一个函数,所以您不必对它使用括号。如果您希望向 echo() 传递一个以上的参数,使用括号将会生成解析错误。echo() 函数比 print() 速度稍快
print()
print() 函数输出一个字符串,print() 函数实际不是一个函数,所以您不必对它使用括号
print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值的列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
5.0 PHP数据类型
PHP支持8种主要数据类型和3种伪类型5.1 字符串型
字符型(String),必须括在定界符内,多个字符串或变量之间用符号 . 连接
PHP字符数据类型的定界符有:
单引号 ' '
双引号 " "
HereDoc :
<<<定界符
………………
定界符
说明:
定界符中标识符只能包含字母数字下划线,而且必须以下划线或非数字字符开始
结束定界符必须位于行首,定界符所在的行后不能包含任何其它字符
单引号与双引号区别
单引号仅支持'和\两个转义符;而双引号支持所有转义符
双引号内的变量可以被解析;而单引号无此功能:
双引号内的变量可以被解析,但是在解析时,PHP引擎会尽量多获取一些合法字符,PHP引擎认为获取的字符越多,含义就越明确!但如果变量后面带有合法字符,但该字符不应该认为是变量名称的组成部分时,使用花括号将变量名称括起来
整型,浮点型, 布尔型
整型(Integer),可以存储八进制、十进制、十六进制的整数
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
整型数的字长和平台有关,通常是4个字节(-2147483648~2147483647)
Integer值的字长可以用常量PHP_INT_SIZE来表示,最大值可以用常量PHP_INT_MAX来 表示。
如果给定的一个数超出了 integer 的范围,将会被解释为 float
浮点型(Float/Double),其存储范围与平台有关
布尔型(Boolean),只能为true/false或TRUE/FALSE
变量相关函数
获取变量的整数值 int intval ( mixed $var [, int $base ] )
获取变量的浮点值 float floatval ( mixed $var )
检测变量是否设置 bool isset ( mixed $var [, mixed $... ] )
销毁指定的变量 void [unset] ( mixed $var [, mixed $... ] )
is_array()— 检测变量是否是数组
is_bool() — 检测变量是否是布尔型
is_double() — is_float 的别名
is_float()— 检测变量是否是浮点型
is_int() — 检测变量是否是整数
is_integer() — is_int 的别名
is_null() — 检测变量是否为 NULL
is_numeric() — 检测变量是否为数字或数字字符串
is_object() — 检测变量是否是一个对象
is_resource() — 检测变量是否为资源类型
is_scalar() — 检测变量是否是一个标量
is_string() — 检测变量是否是字符类型
???思考一下: $a=false; var_dump(isset($a));
预定义超全局变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量
$_POST — HTTP POST 变量
$_REQUEST — HTTP Request 变量
$_FILES — HTTP 文件上传变量
$_SESSION — Session 变量
$_COOKIE — HTTP Cookies
$_ENV — 环境变量
$GLOBALS — 引用全局作用域中可用的全部变量
<?php
$x = 75;
$y = 25;
function test()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
test();
echo $z;
?>
常量
常量是一个简单值的标识符。其值一经定义,无法通过程序修改。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符,一般采用全大写字母)。
常量在整个脚本中都可以使用
设置常量,使用 define() 函数,函数语法如下:
define(string constant_name, mixed value, [ bool case_insensitive] )
该函数有三个参数:
constant_name:必选参数,常量名称,即标志符。
value:必选参数,常量的值。
case_insensitive :可选参数,指定是否大小写敏感,设定为 true 表示不敏感
常量与变量区别
常量和变量不同:
常量前面没有美元符号($);
常量只能用 define() 函数定义,而不能通过赋值语句;
常量可以不用理会变量范围的规则而在任何地方定义和访问;
常量一旦定义就不能被重新定义或者取消定义;
常量的值只能是标量。
可以用函数 constant() 来读取常量的值
可以用来读取由变量而得到的常量名
用 get_defined_constants() 可以获得所有已定义的常量列表
魔术常量和运算符
PHP_VERSION 返回服务器PHP版本号
___FILE____ 返回当前文档的位置及名称
___LINE____ 返回行号
____CLASS____ 返回类名称
____METHOD____ 返回方法名称
____FUNCTION____ 返回函数名称
递增递减运算符
类型运算符
错误抑制运算符
算术运算符
字符串运算符
比较运算符
逻辑运算符
赋值运算符
执行运算符
为什么使用会话技术?
HTTP协议是无状态协议
HTTP协议不能告诉我们多次请求是否是来自同一个人
会话控制的思想就是允许服务器跟踪同一个客户端做出的连续请求
会话跟踪的方式
HTTP是无状态的协议,所以不能维护两个事物间的状态。但一个用户在请求一个页面以后再请求另一个页面时,需要让服务器知道这是同一个用户
将用户信息从一个页面传到另一个页面,有三种方法可以完成
使用url将用户的信息状态传到另一页面
使用cookie将用户的信息状态,存放在客户端的计算机中
使用session将用户的信息状态,存放在服务器之中
SESSION 和 设置session,获取session,销毁session
Session和Cookie相似,都是用来储存使用者的相关信息
Cookie是将数据存放在客户端的计算机之中
Session则是将数据存放于服务器之中
Session开启后将会在服务器创建以session_id命名的文件来保存用户信息,并将session_id作为cookie发送给客户端保存
设置session:
session的设置不同于cookie,必须先启动session
session_start()函数之前不能有任何输出
session_start();
$_SESSION["username"] = "rose";
$_SESSION["uid"] = 1;
获取session:
[$_SESSION['名称']]()
通过超全局变量$_SESSION来获取
销毁session:
删除内存中由Session数组保存的变量
清除所有变量可以使用 $_SESSION=array()
setcookie(session_name(),'',time()-3600,'/')
删除客户端cookie保留的session_id
删除服务器端保留session信息的文件