初步
- gettype() 获取变量
- echo <<<EOF 内容 EOF; eof可以使用任意标记代替
- 数组定义:array(1,2) [1,2,3]
- foreach($arr as
k
e
y
=
>
key=>
key=>value)
- global $maoshu 就是可以使用到外面的全局变量
- static 只会第一次定义 第二次就不定义了 会保留前一次的值
- 超全局变量
$GLOBALS
$_SERVER 包含了 header path等,是web服务器提供的
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOLIE
$SESSION
- 空合并运算符 ?? $name = $username ?? ‘suibian’; 如果为null 或者未定义则返回suibian
- <==> 组合比较运算符 可比较数字字符串
- isset() 是否被声明 是否为null
- is_null() 判断是否为null
- empty() 判断是否为空 对未定义的变量也会返回为true 有isset的功能
字符串常用
- explode(
f
l
a
g
,
flag,
flag,str)
- implode(
f
l
a
g
,
flag,
flag,arr)
- strlen()
- strpos(
s
t
r
,
str,
str,find) 在字符串中找查指定的字符 并给指定位置 找不到就是返回false
- stripos(
s
t
r
,
str,
str,find) 不区分大小写
- strrpos 从右边开始找
- strripos
- strtoupper($str)
- strtolower($str)
- ucfirst($str) 将单词首字符变大写 lcfirst() 变小写 ucwords() 将字符串中的每个字符变为大写
- str_replace(
s
e
r
a
c
h
,
serach,
serach,repalce) 替换
- strrev() 字符串翻转
- trim() 去除两端空格
- substr($str,2,3) 字符串截取 从第二个开始截取3个
- mb_substr() 截取中文
数组常用操作
- count()
- array_push(
a
r
r
,
arr,
arr,new)
- array_unshift(
a
r
r
,
arr,
arr,new) 添加到开头
- array_pop($arr) 删除最后一个
- array_shift() 删除并返回最后一个
- array_slice($arr,3,3) 从数组中提取 从第三个开始取出三个
- array_merge() 合并
- array_reverse() 翻转
- in_array(‘str’,$arr) 检查数组中是否存在某个值 返回true
- array_key_exists() key是否存在
- array_keys() 所有的键 也可以找对应的内容 根据值去寻找
- arrary_values() 数组中所有的值
- array_search() 搜索给定值 返回键
- array_unique() 移除数组中的重复值
- max() min()
- sort()
- rsort()
- array_sum()
- array_product()
时间日期操作
- time() php获取是到秒的10位
- microtime(true) 返回一个浮点数的时间戳
- date(‘Y-m-d’,$time) $time必须是秒级的
- strtotime(‘2023-10-01’) 对时间进行加减 strtotime(‘next day’,$basetime) 给你一个基础的时间 $basetime 这个参数非常灵活 怎么操作都是可以的
- mktime(
h
o
u
r
,
hour,
hour,minute,
s
e
c
o
n
d
,
second,
second,mounth,
d
a
y
,
day,
day,year) 生成时间戳
- date_create(‘1324-10-22’) 生成一个时间对象
- date_format($data,‘y=m=d’) 必须是一个时间对象
- $diff = date_diff() 计算连个时间的差距 是需要date对象放入 $diff->format(‘%a’) 差了几天 后面减去前面
- DateTime
- $obj = new DateTime();
- $obj->modify(‘+1 day’);
- $obj->setDate(2024,1,3)
- $obj->setTime(12,0,1);
- $obj ->getTimestamp();
- $obj->format()
-
o
b
j
−
>
d
i
f
f
(
obj->diff(
obj−>diff(datetime) 获取时间差
常量
- define(‘CHANG’,‘changliangdemingzi’)
- echo CHANG;
- const 不能在局部作用域中使用 define可以
- const 可以在类中使用 define不可以
- get_defined_constants()
- get_defined_constants(true)[‘user’] 可以找到自己的
魔术常量
- __LINE__ 当前行号
- __FILE__ 文件完整路径
- __DER__ 目录
- __FUNCTION__ 当前函数的名字
- __CLASS__ 类名
- __NAMESPACE__ 命名空间
- __METHOD__ 民命空间 类名 函数名
- __TRAIT__ 当前使用trait的名称
-
include require
- require 有错误就停止 一开始就加载
- include 警告 不会停止 在用到的时候就加载
- require_once include_once 只引入一次
面向对象PHP
class Animal{
public $name = '小猫仔'
}
(new Animal)->name;
- 构造函数 __construct
- 析构函数 __destruct 对象被销毁是的时候被调用
- public static $cat = ‘猫叔’
- self::$cat 使用静态变量
- 类常量 const chagn = 11; 不可以更改 直接使用:: 去调用就行
- public static function eat(){}
- 继承 extend
- 方法和属性的重写
- final 进制类的方法被重写 方法也可以使用final
- 调用父类的方法 parent:: parent::construct()
- static:: $name 静态延迟绑定 根据实际调用的类来确定属性的值
- 类的多态 方法的重载 就是对不同的参数个数进行判断 func_get_args() 获取参数 fun_num_args();获取数量
- interface
- abstract 只能进行继承 不能实例化
- abstract public function eat(); 抽象方法
- 抽象类可以存在构造函数 但是接口不能存在构造函数
- trait 代码复用 不能有类常量 trait不能被实例化
- trait 中可以使用抽象方法
- trait中可以使用静态属性和静态方法
- trait中可以使用其他的trait
- trait中可以使用功能parent
trait A{
}
trait B{
}
class C{
use A,B;
}
use A,B{
A::eat insteadof B; 用a去替换掉B
B::eat as Beat; 给b重新命名
}
表单和请求
- $_GET $_POST
- 超全局变量 $_REQUEST 包含了 get post cookie的内容
- $_SERVER 获取请求方式
- htmlspecialchars() 将体术字符转化为HTML实体,以避免html文档中 xss攻击
- 资源类型
- is_resource
二阶段
<VirtualHost *:80>
ServerAdmin rivers@163.com
DocumentRoot “/usr/local/apache/htdocs/love1”
ServerName www.love1.lan1.com
ServerAlias www.biaobai.com
ErrorLog “love1.com-error_log”
CustomLog “logs/love1.com-access_log” common
<Directory /usr/local/apache/htdocs/love1>
AllowOverride ALL
Options Indexes FollowSymLinks
Order allow,deny
Allow from 192.168.10.10
<VirtualHost *:80>