[TOC]
在最近使用typecho 中对页面的中的部分功能进行了二次开发,所以将很久不用的php基础知识又重新学了一遍。上一次用还是在2013年用thinks php 开发海淘的电商网站。
0 语法变量
PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,会根据变量的值,自动把变量转换为正确的数据类型。PHP 脚本可以放在文档中的任何位置, 以 <?php 开始,以 ?>
结束:// 单行注释
、/* 多行注释*/
、echo
- 可以输出一个或多个字符串(用,隔开),无返回值[推]、print
- 只允许输出一个字符串,返回值总为 1
一 基本数据类型8种
四种标量类型:boolean
(布尔型逻辑型)、int
(整型)、float
(浮点型, 也称作double
)、 string
(字符串)
两种复合类型:array
(数组)、object
(对象)
两种特殊类型:resource
(资源)、 null
(NULL)
二 运算符7种
逻辑运算符:and
与、or
或、xor
异或、&&
与、||
或、!
非、
算数运算符:+
、-
、*
、/
、%
、++
、--
, 加\减\乘\除\求余数\加加\减减
字符串运算符: .
左右参数连接,将两个字符串链接起来
赋值运算符:+=
、-=
、*=
、/=
、%=
、.=
右边参数附加到左边
比较运算符:>
、>=
、<
、<=
、==
等于、!=
不等于、<>
不等于、===
值或类型全等于、!==
值或类型不等于、1>0?'true':'false' 三元运算
执行运算符:``、shell_exec()
错误抑制符:@
三 流程控制
关键字:break
、continue
、exit/die
、goto
四 变量和函数
1.变量
$ 符号开头,其后是变量的名称,对大小写敏感!(全局变量global $ 、 &$), 变量名必须以字母或者下划线字符开始, 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ ),
变量名不能包含空格
2.常量
请用define(name,value,nocase)
函数-它的三个参数:(类常量const),name名称必选,value值必选,nocase可选-是否对大小写不敏感 默认是false敏感!
常量在整个脚本中可用
魔术常量:__LINE__
文件中的当前行号。__FILE__
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。如:“ E:\wamp\www\test\index.php ”
__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。__FUNCTION__
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)__CLASS__
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。__TRAIT__
Trait 名包括其被声明的作用区域__METHOD__
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)__NAMESPACE__
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
3.作用域
PHP 有四种不同的变量作用域:local
函数内部声明的变量是局部变量,仅能在函数内部访问global
所有函数外部定义的变量,拥有全局作用域。在一个函数中访问一个全局变量,需要使用 global 关键字如: global $x,$y;
static
parameter
4.预定义变量
PHP 超级全局变量列表:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
1)超全局对象:$_SERVER
它是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中项目由Web服务器创建。但是不同的服务器提供的项目不一定都是全部项目,有些会忽略,使用时应该查阅相关服务器规范或说明。可以使用这个对象来查阅服务器和客户端的信息。
服务器信息获取
获取主机名:$_SERVER["SERVER_NAME"]
;
获取服务器软件信息:$_SERVER["SERVER_SOFTWARE"]
;
获取服务器文件(向客户端返回的文件)根路径:$_SERVER["DOCUMENT_ROOT"]
;
获取http主机名,结果和获取主机名一样:$_SERVER["HTTP_HOST"]
;
获取当前脚本(执行该 $_SERVER[......]
语句所在的php文件)的路径:$_SERVER["SCRIPT_NAME"]
;
获取当前脚本的绝对路径:$_SERVER["SCRIPT_FILENAME"]
;
获取当前页面路径,结果和 $_SERVER["SCRIPT_NAME"]
一样:$_SERVER["PHP_SELF"]
;
客户端信息获取
获取客户端信息,一般是浏览器信息:$_SERVER["HTTP_USER_AGENT"]
;
获取客户端协议头信息:$_SERVER["REMOTE_ADDR"]
;
获取客户端端口号:$_SERVER["REMOTE_PORT"]
;
2)$_GET
和$_POST
的使用
和$_SERVER
一样属于全局对象。用于请求获取从前台返回的数据
$_REQUEST
包含了$_GET
和$_POST
两者的作用,所以使用它时,就不用担心method的类型选择的是什么了。
常用的还有$_SERVER["QUEST_STRING"]
,它可以获取客户端get请求url的?后面所带的参数。
4.函数:定义函数使用function关键字,函数的命名主要有三种方式:
Camel Case:小驼峰命名法,myFunction()
Lower Case:下划线命名法,my_function()
Pascal Case:大驼峰命名法,MyFunction()
function myName($a) {
被执行的函数代码;//默认return null;
}
传参和返回值与其他编程语言一样,只是php的形参都是多了一个$符号,
5、字符串函数:
substr()
:返回字符串的一部分,
strlen()
:返回字符串长度,
strpos()
:查找字符串中某字符第一次出现的位,
strrpos()
:查找字符串中某字符最后一次出现的位置,
trim()
:去除首尾空格,
strtoupper()
:将字符串转为大写,
strtolower()
:将字符串转为小写,
ucwords()
:将每个单词的首字母转成大写,
str_replace()
:替换字符串中所匹配的内容
is_string()
:判断是不是字符串,
gzcompress()
:压缩字符串,
gzuncompress()
:解压字符串
五 数组
表达式:$arr=array();
//数组打印 print_r($arr);
索引数组:$car=array(1,2,3)
,所以默认从0开始,长度,count($car)
遍历:for($x=0;x<count($car);$x++){}
关联数组:
$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");
或者
$age['Bill']="63";
$age['Steve']="56";
$age['Elon']="47";
foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>";}
多维数组:$arr = array(array(1,2),array(3,4))
数组遍历:for
、foreach
。
数组函数:
array_push($arr,123)
数组末尾添加123
array_pop($arr)
删除数组末尾元素
array_unshift($arr,123)
往数组的开头添加
array_unshift($arr)
删除数组开头元素
sort($arr)
数组排序
六 面向对象
__construct
构造方法__destruct
析构方法
其它包含文件引用:include "xx.php";//没找到文件警告
require "xx.php";//没找到文件警告并退出
面向对象三大特征:封装、继承、多态 。 (抽象)
include_once
和require_once
文件只引入一次,重复引入不生效。
1)类:一类事物的统称。和其他面向对象编程语言类似,php通过class关键字声明类,其中一个类包含属性和方法两部分;
2)对象:某类事物的实例,比如人类指类,那单个人就是对象。
public
:类内部可以访问,外部可以访问,子类可以访问;
private
:类内部可以访问;
protected
:类内部可以访问,子类可以访问。
3)构造函数:类中存在默认的构造函数,也可以指定构造函数,用于在实例化对象时指定属性而不是使用默认的属性,构造函数自动执行,无需手动调用。构造函数的的名字是两个下划线。
public function __construct($name,$age){}
4)析构函数:也是自动执行的函数,用于实例化对象之后将类销毁。
public function ___destruct(){}
5)继承:可以通过关键字extends来定义类,被继承的类叫父类,以此继承父类的非private属性和方法。子类也可以用自己的构造函数,同时调用父类的构造函数。
七 session和cookie
session存储是指在服务器环境中的存储。
步骤:
1)使用session存储前必须开启:session_start();
2)设置的时候可以取任意名字:$_SESSION['name'] = value;
3)使用:$getValue = $_SESSION['name'];
4)干掉session:unset($_SESSION['name']);
5)清除所有session:session_destroy()。
注:页面跳转方法:header("Location:page.php");
cookie是存储在浏览器中的。
步骤:
1)设置cookie:setcookie("cookiename",$params,time() +3600)
;
参数一是cookie名,参数二是要保存为cookie的变量对象,参数三是过期时间。
2)取cookie:通过全局变量$_COOKIE["cookiename"]
,来取设置存储的cookie;
3)更改cookie和设置一样,通过setcookie来更改:setcookie("cookiename","newvalue",time() + (86400 * 30))
;
4)删除cookie也是使用setcookie来进行操作,只要将过期时间和设置cookie时对应上即可:setcookie("cookiename",$params,time() - 3600)
;
5)判断有几个cookie:count($_COOKIE)
。
参考文献
https://www.runoob.com/php/php-tutorial.html
https://www.w3cschool.cn/php/php-oop.html