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

SessionCookie相似,都是用来储存使用者的相关信息
Cookie是将数据存放在客户端的计算机之中
Session则是将数据存放于服务器之中
Session开启后将会在服务器创建以session_id命名的文件来保存用户信息,并将session_id作为cookie发送给客户端保存

设置session:

session_start()

session的设置不同于cookie,必须先启动session
session_start()函数之前不能有任何输出

$_SESSION['名称']=值

session_start(); 
$_SESSION["username"] = "rose"; 
$_SESSION["uid"] = 1; 
获取session:
[$_SESSION['名称']]()

通过超全局变量$_SESSION来获取

销毁session:

unset($_SESSION[‘名称’])

删除内存中由Session数组保存的变量
清除所有变量可以使用 $_SESSION=array()

setcookie(session_name(),'',time()-3600,'/')

删除客户端cookie保留的session_id

session_destroy()

删除服务器端保留session信息的文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,016评论 4 97
  • 简介:PHP是一种通用开源脚本语言,运行在服务器端 执行原理: 客户端向服务器发送一个请求,如果请求的是HTML,...
    Kylin824阅读 263评论 0 1
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,084评论 2 38
  • 1. 字符串中的单引号与双引号的区别? 两者均能表示字符串,不同之处在于双引号包含的变量($str)会被自动替换成...
    php_bruce阅读 674评论 0 0
  • PHP 学习目录 ├─PHP视频教程 1 LAMP网站构建 │ ├─PHP教程 1.1.1 新版视频形式介绍│ ...
    曹渊说创业阅读 16,066评论 29 417